当前位置: 首页 > 知识库问答 >
问题:

更改LocalDateTimeFormats以包括秒和毫秒

徐皓君
2023-03-14

根据要求,我的代码应该将ZonedDateTime参数中的日期和OffSetTime参数中的时间附加到格式“yyyy-MM-dd-HH:MM:ss.SSSz”中。然而,我没能做到这一点

我用DateTimeFormatter尝试了各种方法,包括下面的方法。

ZonedDateTime zonedDateTime = ZonedDateTime.parse("2019-05-23T09:00:00-05:00");
OffsetTime offsetTime = OffsetTime.parse("08:59:00-05:00");
LocalDateTime localDateTime = LocalDateTime.of(zonedDateTime.toLocalDate(), offsetTime.toLocalTime());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSz");
String finalDate = localDateTime.format(formatter);

我注意到:-代码在LocalDateTime抛出“java.time.DateTimeException:无法提取值:class java.time.LocalDateTime”。格式(格式化程序)

期望是像这样在字符串中获得日期时间-"2019-05-23T08:59:00.000Z"

感谢您的帮助,谢谢您抽出时间。

共有1个答案

萧波峻
2023-03-14

四个问题:

>

即使有,您的输入也只有时区偏移,而不是完整的时区,所以格式化字符串不能使用z,因为这需要时区名称。改用XXX

由于输入是偏移量-05:00,因此不应使用Z(Zulu)进行输出,因为这意味着00:00,除非您还希望将时间调整5小时。

年份的格式模式应该使用uuu,而不是yyyy。请参见DateTimeFormatter中的uuuuyyyy对Java中的模式代码进行格式化?

假设您想保留时区,请将代码更改为:

ZonedDateTime zonedDateTime = ZonedDateTime.parse("2019-05-23T09:00:00-05:00");
OffsetTime offsetTime = OffsetTime.parse("08:59:00-05:00");
OffsetDateTime offsetDateTime = zonedDateTime.toLocalDate().atTime(offsetTime);

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSSXXX");
System.out.println(offsetDateTime.format(formatter));
2019-05-23 08:59:00.000-05:00

如果您想要调整Zulu时间,即UTC,则添加行进行调整:

OffsetDateTime offsetDateTime = zonedDateTime.toLocalDate().atTime(offsetTime)
                                .withOffsetSameInstant(ZoneOffset.UTC);

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSSXXX");
System.out.println(offsetDateTime.format(formatter));
2019-05-23 13:59:00.000Z
 类似资料:
  • 问题内容: 我想以毫秒为单位,仅包含年,月和日期的当前日期。但是当我使用此代码时: 我仍然以毫秒为单位获取时间。我怎样才能解决这个问题? 问题答案: 请注意日历的时区。

  • 问题内容: 我正在编写一个赛车应用程序,想要将大量毫秒转换为minutes:seconds.milliseconds(例如)。目前,我只是通过数学()进行运算,然后求余数并进一步除法,依此类推,但是我发现它时不时关闭1毫秒。我知道这听起来似乎没什么大不了的,但是我试图找到和的平均值,然后返回,这意味着它输入不正确,而应用程序的其余部分无法处理。 有没有一种方法使用或格式化毫秒到MM或类似的东西:s

  • 问题内容: 有什么办法可以使时间戳记中的毫秒数变为或(或出于好奇而使毫秒数)? 是否有这样的事情: 或者,唯一的选择是使用从? 问题答案: 在MySQL中 以秒 为单位获取Unix时间戳: 详细信息:http : //dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix- timestamp 未经测试的

  • 问题内容: 我在截断数据时遇到了一些麻烦。我正在使用SQL的GETDATE()函数来获取当前日期和时间,并将它们输入数据库。但是,我只想保存日期和时间直到分钟。换句话说,我希望在输入新数据时保存dd/ mm / yyyy hh:mm:00.000或dd / mm / yyyy hh:mm。我该怎么做呢? 我应该注意我正在使用MS-SQL。 问题答案: 有许多方法可以做到这一点。 例如,您可以将生成

  • 问题内容: 这是我的代码: 是否可以在日期格式中添加毫秒和纳秒? 问题答案: 您可以通过在末尾添加来添加毫秒数,例如格式为。 毫微秒内没有参考。通常用于性能调试,而不用于显示目的。

  • 问题内容: 我做了一些研究,但仍然找不到如何得到的日子…这是我得到的: 请帮助,我在数学上很烂,谢谢。 问题答案: 如果您没有另一个大于天的时间间隔: 如果您还有几个星期: 如果可能的话,最好避免使用几个月和几年,因为它们没有明确定义的固定长度。严格来说,两天都没有:夏令时意味着天的长度可以不是24小时。