gpt4 book ai didi

java - 解析日期时间字符串时时区不一致

转载 作者:行者123 更新时间:2023-12-01 15:56:47 25 4
gpt4 key购买 nike

我使用 SimpleDateFormat 将两种类型的字符串转换为 ISO 格式用于解析和 org.apache.commons.lang.time.DateFormatUtils用于格式化(因为它们提供了开箱即用的 ISO 格式化程序)。

用于解析的模式字符串是 M/d/y H:md.M.y H:m 。要转换的典型字符串可能类似于 4/14/2009 11:224.14.2009 11:22 。我按如下方式初始化解析器:

SimpleDateFormat SLASH = new SimpleDateFormat(PATTERN_S, Locale.getDefault());
SimpleDateFormat DOT = new SimpleDateFormat(PATTERN_D, Locale.getDefault());

我得到了格式化程序:

  FastDateFormat isoFormatter = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT

创建Date后从解析后的字符串:

Date date = FORMAT_SLASH.parse(old);

它被格式化为输出:

isoFormatter.format(date)

奇怪的是:当 String带斜杠的转换,输出看起来像 2009-04-14T11:42:00+01:00 (这是正确的)但是当 String带点的转换,输出看起来像 2010-02-14T11:42:00+02:00 ,将我的时区移至芬兰和南非之间的某个位置,年份为 2010 年,月份为 2 月

这里出了什么问题,为什么?

编辑:更改输出字符串以匹配实际输出(该死的,剪切粘贴)。原因是互换了Md在我没有注意到的模式字符串中。 14似乎是一个完全有效的月份 - 明年的二月,甚至非宽松的设置也不能强制格式化程序拒绝它。时移问题已解决,时区更改的原因由 Jim Garrison 提供。谢谢艾哈迈德和吉姆

最佳答案

你的点模式是d.M.y H:m,而你的例子显示你的意思是M.d.y H:m,我想这会抛出一个ParseException >,但事实并非如此,并且会导致时区问题。

关于java - 解析日期时间字符串时时区不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899579/

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