import java.time.Clock; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; /** * @Author: JCccc * @CreateTime: 2018-09-11 * @Description: * 2018-12-04 1.使用DateTimeFormatter替换了部分SimpleDateFormat, 因为线程安全问题。 * 2.后期这个工具类应该需要优化,因为有Instant,这个专门获取时间戳的类 * 2018-12-12 将SimpleDateFormat相关的方法全部去除替换 */ public class TimeConversionUtil { //计算两个日期直接相隔几天 public static int daysBetweenCount(String strTime1, String strTime2) { DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date1 = LocalDate.parse(strTime1, ftf); LocalDate date2 = LocalDate.parse(strTime2, ftf); return Math.toIntExact(date1.until(date2, ChronoUnit.DAYS)); } //传入long时间戳 ,转换成格式化的String类型时间 public static String timeOfLongToStr(long time) { DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); return ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault())); } //传入String类型格式化时间,转换成Long类型的时间戳 public static long timeOfStrToLong(String strTime){ DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime parse = LocalDateTime.parse(strTime, ftf); return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); } //通过LocalDateTime获取当前格式化时间 public static String getTimeStrNow(){ //DateTimeFormatter替换了SimpleDateFormat, 因为线程安全问题。 return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } //通过LocalDateTime获取当前格式化时间 public static String getTimeStrNow1(){ //DateTimeFormatter替换了SimpleDateFormat, 因为线程安全问题。 return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); } //获取当前时间戳方法一 public long getTimeLongOfClock(){ return Clock.systemDefaultZone().millis(); } //获取当前时间戳方法二 public long getTimeLongOfCalendar(){ Calendar calendar = Calendar.getInstance(); return calendar.getTimeInMillis(); } //获取当前时间戳方法三 public long getTimeLongOfSystem(){ return System.currentTimeMillis(); } //获取当前时间戳方法四 public long getTimeLongOfDate(){ Date date = new Date(); return date.getTime(); } //获取当前时间戳五 精确到毫秒 public static long getTimeLongOfInstant(){ Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(0)); // System.out.println("秒数:"+now.getEpochSecond()); // System.out.println("毫秒数:"+now.toEpochMilli()); return now.toEpochMilli(); } //获取当前时间戳六 精确到秒 public static long getTimeLongOfInstantEpochSecond(){ Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(0)); // System.out.println("秒数:"+now.getEpochSecond()); // System.out.println("毫秒数:"+now.toEpochMilli()); long longTimeNow=now.getEpochSecond(); return longTimeNow; } 工具类调试 public static void main(String[] args) { String timeStrNow = getTimeStrNow(); System.out.println(timeStrNow); String s = timeOfLongToStr(getTimeLongOfInstant()); System.out.println(s); } }