Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SimpleDataFormat无法正常工作_Java_Android_Date_Timezone_Simpledateformat - Fatal编程技术网

Java SimpleDataFormat无法正常工作

Java SimpleDataFormat无法正常工作,java,android,date,timezone,simpledateformat,Java,Android,Date,Timezone,Simpledateformat,SimpleDataFormat有一个奇怪的问题,问题是日期格式化程序没有将日期解析到我的时区,即使TimeZone.getDefault()给了我正确的时区 如果这还不够,我运行以下程序,得到以下结果(在评论中): 这怎么可能??我甚至不知道df.parse方法在做什么,因为生成的小时从来没有超过凌晨1点,我的意思是,那是18:58,但现在我的时间是7:32,我仍然得到00:32而不是1:32 我错过什么了吗?字符串日期是从服务器获取的,其格式无法更改,因为它们用于其他已经生产的服务中 这种情

SimpleDataFormat有一个奇怪的问题,问题是日期格式化程序没有将日期解析到我的时区,即使TimeZone.getDefault()给了我正确的时区

如果这还不够,我运行以下程序,得到以下结果(在评论中):

这怎么可能??我甚至不知道df.parse方法在做什么,因为生成的小时从来没有超过凌晨1点,我的意思是,那是18:58,但现在我的时间是7:32,我仍然得到00:32而不是1:32

我错过什么了吗?字符串日期是从服务器获取的,其格式无法更改,因为它们用于其他已经生产的服务中

这种情况发生在Android手机上,手机中的时间设置为ok。

好的,我知道了,“不超过凌晨1点是关键”

问题是解析文本“H”在0-23小时内使用,对于am pm,您应该使用“H”“K”

最终格式字符串必须为:

"MM/dd/yy hh:mm a"

我认为Java应该发送一个错误或警告,试图解析过去的>12小时,而不是仅仅用“00”替换它。。。这些不是结果,这些是评论!!认真地如果运行System.out.println(df.format(df.parse(“07/03/13 18:34 PM”))会得到什么?你知道当使用
SimpleDataFormat 35; parse
时会得到
日期,而
日期对象本身没有模式,对吗?@G.BlakeMeike这是为了节省问题中的空间,这些是打印,我将编辑我的问题以包括sysout…@LuiggiMendoza,这是日期对象“toString()”的默认描述。结果的日期毫秒也不同。我尝试了你的代码(添加了sysos),效果很好。对于你正在解析的字符串,H很好。这很奇怪,但很好。它使用格式字符串和日期字符串为我正确解析。如果我使用hh而不是hh,它会增加12个小时的时间,并显示07/04/13 06:34 AM Thu Jul 04 06:34:00 PDT 2013,我不明白的是为什么
07/03/13 18:34 PM
被解析为
Wed Jul 03 00:58:00 CDT 2013
。即使我们考虑<代码> h <代码>是问题,为什么还要加24分钟。你确定那是你使用的格式字符串吗?如果你把它改回“MM/dd/yy HH:MM a”,你还得到坏日期吗?您应该使用适合您的数据的选项。我只是好奇为什么会发生这种情况。@Junaid哈哈,这是我的错误,我之前测试过,但在我写了问题之后,我忘记了更新那个数字。
"MM/dd/yy hh:mm a"