如何以天为单位指定日期/时间偏移量
How to specify a date / time offset in days
使用 Java 的日期解析机制,我想指定一个日期/时间的偏移量(以天为单位)。基本上类似于时区偏移。
示例:
- 昨天: 午夜减去 1 天
- 前天: 午夜减去 2 天
- 前天中午:午夜减1天减
12 小时
- 1 周前开始:午夜减去 1 周
这可能吗?如何实现?
我认为在解析时不可能。但是在将 Java8 解析为 LocalDateTime
对象之后,您仍然可以在 Java8 中进行日期时间操作,
System.out.println("Tomorrow: " + LocalDateTime.now().plusDays(1));
System.out.println("Yesterday: " + LocalDateTime.now().minusDays(1));
System.out.println("One week ago: " + LocalDateTime.now().minusWeeks(1));
您可以结合 Duration class 应用日期和时间修改。示例:
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.parse( "-P1DT15M");
System.out.println( "Duration : " + duration.toMillis());
System.out.println( "Now : " + formatter.format( now));
System.out.println( "Now-P1DT15M: " + formatter.format( duration.addTo(now)));
结果
Duration : -87300000
Now : 2018-04-12T08:59:10.91
Now-P1DT15M: 2018-04-11T08:44:10.91
使用 Java 的日期解析机制,我想指定一个日期/时间的偏移量(以天为单位)。基本上类似于时区偏移。
示例:
- 昨天: 午夜减去 1 天
- 前天: 午夜减去 2 天
- 前天中午:午夜减1天减 12 小时
- 1 周前开始:午夜减去 1 周
这可能吗?如何实现?
我认为在解析时不可能。但是在将 Java8 解析为 LocalDateTime
对象之后,您仍然可以在 Java8 中进行日期时间操作,
System.out.println("Tomorrow: " + LocalDateTime.now().plusDays(1));
System.out.println("Yesterday: " + LocalDateTime.now().minusDays(1));
System.out.println("One week ago: " + LocalDateTime.now().minusWeeks(1));
您可以结合 Duration class 应用日期和时间修改。示例:
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.parse( "-P1DT15M");
System.out.println( "Duration : " + duration.toMillis());
System.out.println( "Now : " + formatter.format( now));
System.out.println( "Now-P1DT15M: " + formatter.format( duration.addTo(now)));
结果
Duration : -87300000
Now : 2018-04-12T08:59:10.91
Now-P1DT15M: 2018-04-11T08:44:10.91