JAVA 获取系统当前时间、时间格式互相转化工具类

谁借莪1个温暖的怀抱¢ 2022-05-13 06:42 319阅读 0赞
  1. import java.time.Clock;
  2. import java.time.Instant;
  3. import java.time.LocalDateTime;
  4. import java.time.ZoneId;
  5. import java.time.format.DateTimeFormatter;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8. import java.util.concurrent.TimeUnit;
  9. /**
  10. * @Author: JCccc
  11. * @CreateTime: 2018-09-11
  12. * @Description:
  13. * 2018-12-04 1.使用DateTimeFormatter替换了部分SimpleDateFormat, 因为线程安全问题。
  14. * 2.后期这个工具类应该需要优化,因为有Instant,这个专门获取时间戳的类
  15. * 2018-12-12 将SimpleDateFormat相关的方法全部去除替换
  16. */
  17. public class TimeConversionUtil {
  18. //计算两个日期直接相隔几天
  19. public static int daysBetweenCount(String strTime1, String strTime2) {
  20. DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  21. LocalDate date1 = LocalDate.parse(strTime1, ftf);
  22. LocalDate date2 = LocalDate.parse(strTime2, ftf);
  23. return Math.toIntExact(date1.until(date2, ChronoUnit.DAYS));
  24. }
  25. //传入long时间戳 ,转换成格式化的String类型时间
  26. public static String timeOfLongToStr(long time) {
  27. DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  28. return ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault()));
  29. }
  30. //传入String类型格式化时间,转换成Long类型的时间戳
  31. public static long timeOfStrToLong(String strTime){
  32. DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  33. LocalDateTime parse = LocalDateTime.parse(strTime, ftf);
  34. return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
  35. }
  36. //通过LocalDateTime获取当前格式化时间
  37. public static String getTimeStrNow(){
  38. //DateTimeFormatter替换了SimpleDateFormat, 因为线程安全问题。
  39. return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
  40. }
  41. //通过LocalDateTime获取当前格式化时间
  42. public static String getTimeStrNow1(){
  43. //DateTimeFormatter替换了SimpleDateFormat, 因为线程安全问题。
  44. return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
  45. }
  46. //获取当前时间戳方法一
  47. public long getTimeLongOfClock(){
  48. return Clock.systemDefaultZone().millis();
  49. }
  50. //获取当前时间戳方法二
  51. public long getTimeLongOfCalendar(){
  52. Calendar calendar = Calendar.getInstance();
  53. return calendar.getTimeInMillis();
  54. }
  55. //获取当前时间戳方法三
  56. public long getTimeLongOfSystem(){
  57. return System.currentTimeMillis();
  58. }
  59. //获取当前时间戳方法四
  60. public long getTimeLongOfDate(){
  61. Date date = new Date();
  62. return date.getTime();
  63. }
  64. //获取当前时间戳五 精确到毫秒
  65. public static long getTimeLongOfInstant(){
  66. Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(0));
  67. // System.out.println("秒数:"+now.getEpochSecond());
  68. // System.out.println("毫秒数:"+now.toEpochMilli());
  69. return now.toEpochMilli();
  70. }
  71. //获取当前时间戳六 精确到秒
  72. public static long getTimeLongOfInstantEpochSecond(){
  73. Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(0));
  74. // System.out.println("秒数:"+now.getEpochSecond());
  75. // System.out.println("毫秒数:"+now.toEpochMilli());
  76. long longTimeNow=now.getEpochSecond();
  77. return longTimeNow;
  78. }
  79. 工具类调试
  80. public static void main(String[] args) {
  81. String timeStrNow = getTimeStrNow();
  82. System.out.println(timeStrNow);
  83. String s = timeOfLongToStr(getTimeLongOfInstant());
  84. System.out.println(s);
  85. }
  86. }

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读