猿问

如何将 LocalDateTime 转换为`"yyyy-MM-dd'T'HH:mm:ss'Z'"`

我正在尝试将字符串的格式解析"yyyy-MM-dd'T'HH:mm:ss'Z'"为LocalDateTime如果日期是sunday或者saturday我想将日期更改为monday相同格式并返回,我知道我可以通过使用添加天数plusDays


String str = "2018-09-22T12:30:10Z";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");

LocalDateTime dateTime = LocalDateTime.parse(str, formatter);

System.out.println(dateTime.plusDays(2));  //2018-09-24T12:30:10

但我想以格式返回 2018-09-24T12:30:10Z


森栏
浏览 270回答 3
3回答

墨色风雨

   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().

人到中年有点甜

转换为Instant时间。System.out.println(dateTime.plusDays(2).toInstant(ZoneOffset.UTC)));
随时随地看视频慕课网APP

相关分类

Java
我要回答