package com.huawei.it.gts.ls.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * 时间工具类 * @author z00438584 */ public class DateUtil { public static final String DATE_TIME_FORMAT_DEFALUT = "yyyy/MM/dd HH:mm:ss"; public static final String FULL_TIME_PATTERN = "yyyyMMddHHmmss"; public static final String FULL_TIME_SPLIT_PATTERN = "yyyy-MM-dd HH:mm:ss"; public static String formatFullTime(LocalDateTime localDateTime) { return formatFullTime(localDateTime, FULL_TIME_PATTERN); } public static String formatFullTime(LocalDateTime localDateTime, String pattern) { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); return localDateTime.format(dateTimeFormatter); } private static String getDateFormat(Date date, String dateFormatType) { SimpleDateFormat simformat = new SimpleDateFormat(dateFormatType); return simformat.format(date); } public static String formatCSTTime(String date, String format) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); Date d = sdf.parse(date); return DateUtil.getDateFormat(d, format); } public static int daysBetween(Date start, Date end) { Calendar calStart = Calendar.getInstance(); Calendar calEnd = Calendar.getInstance(); calStart.setTime(start); calEnd.setTime(end); // 设置时间为0时 calStart.set(Calendar.HOUR_OF_DAY, 0); calStart.set(Calendar.MINUTE, 0); calStart.set(Calendar.SECOND, 0); calEnd.set(Calendar.HOUR_OF_DAY, 0); calEnd.set(Calendar.MINUTE, 0); calEnd.set(Calendar.SECOND, 0); // 得到相差的天数 int days = ((int) (calEnd.getTime().getTime() / 1000) - (int) (calStart.getTime().getTime() / 1000)) / 3600 / 24; return days; } public static Date getDateAddDay(Date date, int days) { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DAY_OF_MONTH, days); return c.getTime(); } public static String getDateStringByFormat(Date date, String dateFormat) { if (date == null) { return null; } SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); return simpleDateFormat.format(date); } public static int dateCompare(Date date1, Date date2) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); String dateFirst = dateFormat.format(date1); String dateLast = dateFormat.format(date2); int dateFirstIntVal = Integer.parseInt(dateFirst); int dateLastIntVal = Integer.parseInt(dateLast); if (dateFirstIntVal > dateLastIntVal) { return 1; } else if (dateFirstIntVal < dateLastIntVal) { return -1; } return 0; } /** * Date转成LocalDateTime,使用系统默认时区 */ public static LocalDateTime date2LocalDateTime(Date date){ // An instantaneous point on the time-line.(时间线上的一个瞬时点。) Instant instant = date.toInstant(); ZoneId zoneId = ZoneId.systemDefault(); //A time-zone ID, such as {@code Europe/Paris}.(时区) LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime(); return localDateTime; } /** * LocalDateTime转成Date,使用系统默认时区 */ public static Date localDateTime2Date( LocalDateTime localDateTime){ ZoneId zoneId = ZoneId.systemDefault(); // Combines this date-time with a time-zone to create a ZonedDateTime. ZonedDateTime zdt = localDateTime.atZone(zoneId); Date date = Date.from(zdt.toInstant()); return date; } /** LocalDateTime转成String */ public static String localDateTime2Str(LocalDateTime localDateTime, String formatStr) { DateTimeFormatter df = DateTimeFormatter.ofPattern(formatStr); String localDateTimeStr = df.format(localDateTime); return localDateTimeStr; } /** LocalDateTime转成String,默认格式:yyyy/MM/dd HH:mm:ss */ public static String localDateTime2Str(LocalDateTime localDateTime) { return localDateTime2Str(localDateTime, DATE_TIME_FORMAT_DEFALUT); } /** * 日期时间字符串转LocalDateTime * @author xWX787141 * @param dateTime 时间字符串 * @param format 时间字符串格式,必须带时分秒 * @return */ public static LocalDateTime string2DateTime(String dateTime,String format) { DateTimeFormatter df = DateTimeFormatter.ofPattern(format); return LocalDateTime.parse(dateTime,df); } /** * 日期时间字符串转LocalDate * @author xWX787141 * @param date 时间字符串 * @param format 时间字符串格式,不带时分秒 * @return */ public static LocalDate string2Date(String date,String format) { DateTimeFormatter df = DateTimeFormatter.ofPattern(format); return LocalDate.parse(date,df); } }