当前时间加上时间戳关于日期的计算,很多朋友们都喜欢用时间戳来直接相加,比如希望得到当前时间之后30天的时间,会这么写代码: 直接把 new Data().getTime() 方法得到的时间戳加上30天对应的毫秒数,也就是30天 * 24小时 * 3600秒 * 1000毫秒
Date today = new Date();Date nextMonth = new Date(today.getTime()+30*24*3600*1000);System.out.println(today);System.out.println(nextMonth);
得到的结果可能会让我失败:
Sat Jul 10 07:41:30 CST 2021Sun Jun 20 14:38:43 CST 2021
得到的日期竟然比当前的日期还好早,你说怎么回事呢?
原因是:
因为 int 发生了溢出
怎样修改呢?我们只要把 30改成30L即可,让其成为long
Date today = new Date();Date nextMonth = new Date(today.getTime()+30L*24*3600*1000);System.out.println(today);System.out.println(nextMonth);
结果:
Sat Jul 10 07:44:38 CST 2021Mon Aug 09 07:44:38 CST 2021
使用Calendar在java8之前,我们一般使用Calendar类来实现
Calendar c = Calendar.getInstance();c.setTime(new Date());System.out.println(c.getTime());c.add(Calendar.DAY_OF_MONTH,30);System.out.println(c.getTime());
结果:
Sat Jul 10 07:47:25 CST 2021Mon Aug 09 07:47:25 CST 2021
java 8 日期时间使用 Java 8 的日期时间类型,可以直接进行各种计算,更加简洁和方便:
LocalDateTime localDateTime = LocalDateTime.now();System.out.println(localDateTime.plusDays(30));
下面介绍LocalDateTime的基本用法:
1) 获取一年、月、日
private LocalDateTime localDateTime = null;@Beforepublic void init(){localDateTime = LocalDateTime.now();}@Testpublic void test1(){System.out.println("Year:"+localDateTime.getYear());System.out.println("Month:"+localDateTime.getMonth().getValue());System.out.println("Day of Month:"+localDateTime.getDayOfMonth());System.out.println("Day of Week:"+ localDateTime.getDayOfWeek());System.out.println("Day of Year:"+localDateTime.getDayOfYear());}
结果:
Year:2021Month:7Day of Month:10Day of Week:SATURDAYDay of Year:191
- 获取小时、分钟、秒
System.out.println("Hour:"+localDateTime.getHour());System.out.println("Minute :"+localDateTime.getMinute());System.out.println("Second:"+localDateTime.getSecond());System.out.println("Nano:"+localDateTime.getNano());
结果:【java获取时间戳精确到微秒讲解 java获取时间戳精确到毫秒】
Hour:8Minute :17Second:32Nano:50000000
- 对日期做加减
System.out.println("minus days:"+ localDateTime.minusDays(1));System.out.println("minus months:"+localDateTime.minusMonths(1));System.out.println("minus year: "+localDateTime.minusYears(1));System.out.println("minus Hours:"+localDateTime.minusHours(1));System.out.println("minus seconds:"+localDateTime.minusSeconds(1));
- 时间的比较
- boolean isAfter(ChronoLocalDateTime other):检查此日期时间是否在指定日期时间之后 。
- boolean isBefore(ChronoLocalDateTime other)
- boolean isEqual(ChronoLocalDateTime other)
- int compareTo(ChronoLocalDateTime other) 将此日期时间与其他日期时间进行比较 。
LocalDateTime dateTime1 = LocalDateTime.of(2021,5,7,9,22,22);LocalDateTime dateTime2 = LocalDateTime.of(2021,6,7,9,22,22);LocalDateTime dateTime3 = LocalDateTime.of(2021,5,7,9,22,22);if(dateTime1.isBefore(dateTime2)){System.out.println("dateTime1 isbefore dateTime2");}if(dateTime2.isAfter(dateTime3)){System.out.println("dateTime2 isafter dateTime3");}if(dateTime1.equals(dateTime3)){System.out.println("dateTime1 is equal to dateTime3");}if(dateTime1.compareTo(dateTime3) ==0){System.out.println("dateTime1 is equal to dateTime3");}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 情侣水杯上刻字内容 情侣水杯刻字时间写哪一天
- 绿茵信仰预下载时间介绍 绿茵信仰公测预下载
- 免费分享这4种转换方式 java字符串转int方法
- 网络营销师考试考试时间及要求,考试内容有哪些
- 使命召唤19现代战争2B测时间 COD19beta测试时间
- 最佳养生时间,养生最佳时间,七个最佳养生时间
- SD高达激斗同盟月亮与光之骑士DLC什么时候发售-新DLC上线时间
- 原神支付宝联动什么时候开始 原神支付宝联动时间
- 原神招商银行联动什么时候开始 原神招商银行联动时间
- 原神罗森联动什么时候开始 原神罗森联动时间