gpt4 book ai didi

java - 凌晨 12 点 GMT 转换错误

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

好的,我已经使用了 stackoverflow 上的一些帖子来获得一些 XML 数据的半工作转换。

在 XML 数据源中,我获得日期和时间,作为单独的元素 - 它们采用 GMT 时间。

因此,为了转换它并与本地时间进行比较,我正在执行以下操作(“ne”包含来自 XML feed 的对象):

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm");
sdf.setTimeZone(TimeZone.getTimeZone(myTimeZone.getDisplayName()));

Date newdate = sdf.parse(ne.getNewsDate().toString() + " " + ne.getNewsTime().toString());

if (newdate.before(new Date()))
//don't use
else
//use

作为 XML feed 中错误转换的日期/时间的示例,我们来看:

<date>
<![CDATA[ 12-02-2014 ]]>
</date>
<time>
<![CDATA[ 12:00am ]]>
</time>

上面的“newdate”返回“Tue Dec 02 23:00:00 AEDT 2014”,此时我的系统时钟读数为 2/12/2014 3:00PM”很明显,它正在将 GMT 时间 12-02-2014 12:00am 转换为 future 的时间,而我需要它来意识到它是过去的时间。

所以我感到困惑的是,它正确地转换了提要中的大部分日期/时间,但上面的某些日期/时间是不正确的。

我希望这是有道理的,所以基本上我试图忽略 XML 提要中已消失的日期/时间,方法是将两个单独的日期/时间字段转换为我的本地时间,然后检查它是否是过去或不是。

最佳答案

HH is the date format for 24-hour dates,并且您尚未在日期格式字符串中传递 am/pm 标记占位符。试试这个:

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy hh:mma");

注意 SimpleDateFormat 可能无法将 am/的小写字母 ("am") 识别为 "AM" pm 标记,因此您可能需要调用String#toUpperCase():

Date newdate = sdf.parse(ne.getNewsDate().toString() + " " + ne.getNewsTime().toString().toUpperCase());

关于java - 凌晨 12 点 GMT 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241684/

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