Inf*_*izz 2 java datetime date date-format date-parsing
我一直在搜索,只是无法找到解释或原因发生这种情况,但DateFormat的解析(String)方法只是没有正确解析我的字符串.
我正在尝试将一个String解析为用于HTTP头的日期格式,并获得了自己的String,例如:
Thu, 11 Nov 2010 18:34:22 GMT
Run Code Online (Sandbox Code Playgroud)
其格式如下:
E, d MMM yyyy HH:mm:ss z
Run Code Online (Sandbox Code Playgroud)
但是当我使用df.parse(dateStr);它时,我就是这样做的:
Thu Nov 11 18:34:22 GMT 2010
Run Code Online (Sandbox Code Playgroud)
这与我想要的完全不同,为什么GMT之后的那一年呢?为什么不再有逗号?为什么这个月之后的日期呢?
我现在对此完全感到困惑,无法找到解决方案,但我确实需要以该格式提供日期.逗号弄乱了吗?还是冒号?
谢谢你的时间,
Infinitifizz
PS
忘了提这个,但我尝试过dateformat.setLenient(false)并没有什么区别.
PPS
我正在尝试这样做来比较日期与date1.before(date2)和after()等,看看是否有一个比另一个更新,但我不能这样做,因为解析不起作用.
即使它们看起来相同但只是格式不同,它们也不一样,因为在它们两个上调用getTime()之后(当我提供了2个相同的日期时)长度不一样.截至日期为:
星期四,2010年11月11日19:38:52 GMT对文件的lastModified()
如果我输入字符串"星期四,2010年11月11日19:38:52 GMT",然后比较他们的长片一旦使用parse()将字符串转换为日期,然后在该日期调用getTime()我得到:
lastModified = 1289504332671 fromString = 1289504332000
它只是最后3位不同,这有什么意义吗?
再次感谢您的时间和抱歉,我没有把这一点放在第一位,
Infinitifizz
结果格式是默认格式Date#toString()(单击链接以查看javadoc).你显然正在做一个System.out.println(date).您希望使用SimpleDateFormat#format()其他模式来格式化所需的格式.例如
String newDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
Run Code Online (Sandbox Code Playgroud)
更新:使用时不应该关心格式Date.您应该只关心Date转换(显示)时的格式String.至于时间戳的差异,时间戳的Date使用毫秒精度,而HTTP头使用第二精度.在比较之前,您想将时间戳除以1000.
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |