Java 格林尼治标准时间上午12点转换错误

Java 格林尼治标准时间上午12点转换错误,java,xml,date,Java,Xml,Date,好的,我使用了一些关于stackoverflow的帖子来获得一些XML数据的转换 在XML数据提要中,我得到一个日期和一个时间,作为单独的元素,它们以GMT时间表示 因此,为了转换它并与本地时间进行比较,我将执行以下操作(“ne”包含来自XML提要的对象): 因此,作为一个错误转换的来自XML提要的日期/时间的示例,让我们看一下: <date> <![CDATA[ 12-02-2014 ]]> </date> <time> <![CDATA[

好的,我使用了一些关于stackoverflow的帖子来获得一些XML数据的转换

在XML数据提要中,我得到一个日期和一个时间,作为单独的元素,它们以GMT时间表示

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

因此,作为一个错误转换的来自XML提要的日期/时间的示例,让我们看一下:

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

上面的“newdate”返回“2014年12月2日星期二23:00:00 AEDT”,此时我的系统时钟显示为2014年12月2日下午3:00” 很明显,它将格林尼治标准时间2014年2月12日凌晨12:00错误地转换为未来的时间,而我需要它意识到这是过去的时间

因此,我感到困惑的是,它正确地转换了来自提要的大多数日期/时间,但上面的某些日期/时间是不正确的

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

并且您没有在日期格式字符串中传递am/pm标记占位符。请尝试以下操作:

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy hh:mma");
N.B.
SimpleDataFormat
可能无法将小写(
“am”
)识别为am/pm标记的
“am”
,因此您可能需要调用
字符串35; toUpperCase()


老兄,我很喜欢这个网站!答案是准确及时的!Thx-我不需要toUpperCase,只需要hh:mma完美!
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy hh:mma");
Date newdate = sdf.parse(ne.getNewsDate().toString() + " " + ne.getNewsTime().toString().toUpperCase());