3 回答
TA贡献1853条经验 获得超6个赞
String str = "2018-09-22T12:30:10Z";
OffsetDateTime dateTime = OffsetDateTime.parse(str);
DayOfWeek dow = dateTime.getDayOfWeek();
if (dow.equals(DayOfWeek.SATURDAY) || dow.equals(DayOfWeek.SUNDAY)) {
dateTime = dateTime.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
}
System.out.println(dateTime);
这个片段的输出是:
2018-09-24T12:30:10Z
它从字符串中获取日期,在本例中为 9 月 22 日,并且由于它是星期六,它确实会调整到下一个星期一。它不使用您的 JVM 时区设置。
您的字符串采用 ISO 8601 格式,这是 java.time 中的类作为默认值解析和生成的标准格式,因此无需通过任何DateTimeFormatter. 在Z该串中表示UTC(换言之,从UTC偏移量0),所以解析它作为偏移并进入OffsetDateTime而非LocalDateTime以保持从所述串中的所有信息。这也使得返回相同格式变得容易。
如果您需要返回 a String,请使用dateTime.toString().
TA贡献1895条经验 获得超7个赞
转换为Instant
时间。
System.out.println(dateTime.plusDays(2).toInstant(ZoneOffset.UTC)));
添加回答
举报