gpt4 book ai didi

java - 解析日期时如何保持时区?

转载 作者:搜寻专家 更新时间:2023-11-01 02:48:39 30 4
gpt4 key购买 nike

我解析带有时区信息的日期,例如:1/7/2008 11:00:00 AM -0700-0700 对应于加利福尼亚州的当前时间偏移量,因为我们现在处于 PDT。 .如果我解析它并显示它:

org.joda.time.format.DateTimeFormat.forPattern("M/d/yyyy hh:mm:ss a Z")
.parseDateTime("1/7/2008 11:00:00 AM -0700").toString()

我得到:2008-01-07T10:00:00.000-08:00。这是“正确的”,因为 10am -0800 = 11am -0700,但是我怎样才能得到返回的日期以保持相同的时间偏移(Z 部分)我有输入吗?

作为旁注,使用 java.text.SimpleDateFormat 会得到类似的结果:new SimpleDateFormat("M/d/yyyy hh:mm:ss a Z").parse( "1/7/2008 11:00:00 AM -0700").toString() 返回 Mon Jan 07 10:00:00 PST 2008,PST = -0800,而我们现在处于 PDT。

最佳答案

您提供的日期是一月,应该是夏令时。因此,如果您希望这些时间采用太平洋时间,则 -0800 偏移量是正确的。

但您没有像 America/Los_Angeles 那样指定时区 ID,那么为什么 JodaTime 会做出这样的假设?

答案可以在the documentation中找到对于 DateTimeFormatter 类:

The underlying printer/parser can be altered to behave exactly as required by using one of the decorator modifiers:

withLocale(Locale) - returns a new formatter that uses the specified locale
withZone(DateTimeZone) - returns a new formatter that uses the specified time zone
withChronology(Chronology) - returns a new formatter that uses the specified chronology
withOffsetParsed() - returns a new formatter that returns the parsed time zone offset
withPivotYear() - returns a new formatter with the specified pivot year
withDefaultYear() - returns a new formatter with the specified default year

The documentation对于 DateTimeFormatter.forPattern() 方法说:

The format may contain locale specific output, and this will change as you change the locale of the formatter. Call DateTimeFormatter.withLocale(Locale) to switch the locale.

由于您不想使用特定的区域设置或时区,我相信您应该使用以下内容:

org.joda.time.format.DateTimeFormat.forPattern("M/d/yyyy hh:mm:ss a Z")
.withOffsetParsed()
.parseDateTime("1/7/2008 11:00:00 AM -0700").toString()

参见 these docs对于 .withOffsetParsed() 的行为,这正是您要问的。

关于java - 解析日期时如何保持时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16452508/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com