当前位置: 首页 > 面试题库 >

解析DateFormat时的Java时区

孟鸿德
2023-03-14
问题内容

我有解析日期的代码,如下所示:

String ALT_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
SimpleDateFormat sdf = new SimpleDateFormat(
                    ALT_DATE_TIME_FORMAT);
Date date = sdf.parse(requiredTimeStamp);

一切正常,突然,这停止了。原来,管理员在服务器上进行了一些配置更改,并且当前返回的日期为“
2010-12-27T10:50:44.000-08:00”,上述模式无法解析该日期。我有两个问题:

第一种是哪种模式将解析上述格式的JVM返回的日期(特别是时区为“ -08:00”)?其次,在Linux RHEL
5服务器上,究竟会在哪里更改此类设置,以便我们将来知道此类更改?


问题答案:

另一个应用程序正在使用ISO 8601 dateTime格式。我假设另一个应用程序向您发送的XML响应符合XML
Schema的dateTime类型(即ISO 8601)。现在,众所周知,DateFormat无法解析此格式。您要么必须使用其他库,例如joda-
time(joda-time是赢家),要么使用其他响应中指定的FastDateFormat。



 类似资料:
  • 问题内容: 结果如下: 2011-09-24 14:10:51 -0400 2011年9月24日星期六20:10:51 为什么当我解析来自format()的日期时,它不遵守时区? 问题答案: 您正在打印调用的结果,该调用 始终 使用默认时区。基本上,除了调试之外,您不应该使用其他任何东西。 不要忘记,一个不 具有 时区-它代表着一个时刻,因为自Unix纪元(午夜1970年1月1日UTC)毫秒。 如

  • 所以我必须将它重新格式化回UTC。现在当我试图通过相同的格式化方法将这个解析的日期显示到UTC时区时,它仍然显示在本地时区中。下面是我的代码,将解析的日期格式化为UTC- 我的示例日期字符串是“2015-12-23T15:00:00-0800” 分析后--alreadyParsedDateTime.ToString()::Thu Dec 24 04:30:00 IST 2015 分析后--Syst

  • 我对java时间中的时间处理感到困惑。长期以来,我一直在这样一种假设下工作,即如果将时间戳指定为祖鲁时间,java将处理与本地时间相关的偏移量。 来说明。我目前在BST,它有UTC 1的偏移量。考虑到这一点,我希望这个祖鲁语时间: 成为 解析后的LocalDateTime。这是因为我的默认systemtime设置为BST,并且上面的时间戳(zulu time)指定它是UTC时间。 然而,请考虑这个

  • 我有两种日期格式,一种是字符串“yyyy-mm-dd'hh:mm:ss.sssz”,另一种是长的“yyyymmddhhmmsssss”。我想把它转换成这个格式“yyyy-mm-dd hh:mm:ss”,它转换成功了,但是当我打印date.getTime()时 对于第一个->1416490009109 用于秒->20141120121211800 代码: 对于第二个

  • 我希望能够解析一段时间(天、小时、分钟)可选字符串,以便输入如下:

  • 我是新来Java的。我一直在尝试将日期转换为DD-MMM-YY格式。但我得到了例外: 下面是我的代码。请引导。