当前位置: 首页 > 面试题库 >

使用SimpleDateFormat的日期解析不一致

楚冷勋
2023-03-14
问题内容

我真的很head头。我使用SimpleDateFormats已有一段时间了,但现在,使用SimpleDateFormat解析日期(只是有时)是完全错误的。

特别:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = sdf.parse("2009-08-19 12:00:00");
System.out.print(date.toString());

打印字符串Wed Aug 19 00:00:00 EDT 2009。有没有搞错?-它甚至都不会一直解析为错误的日期!

更新: 修复得很漂亮。您不知道吗,在其他一些地方也滥用了它。一定喜欢调试别人的代码:)


问题答案:

我认为您要使用HH格式,而不是’hh’,以便您使用00-23之间的小时数。“ hh”采用12小时增量的格式,因此假设它位于AM中。

所以这

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2009-08-19 12:00:00");
System.out.print(date.toString());

应该打印出来

2009年美国东部时间8月19日星期三12:00:00



 类似资料:
  • 我尝试将字符串转换为日期。

  • 例如,我得到了这个日期字符串: 看起来Android无法解析某些时区。感谢@Burhanuddin Rashid的这种方法。 此处的解决方案:不可更改的日期:“IST 2014年星期五10月10日23:11:07”(偏移量20)

  • 下面是SimpleDateFormat的设置。 下面是开发人员文档中可解析日期字符串的可能差异列表。正如您所看到的,它们中没有一个在时区中有冒号。 我的第二个问题是当我得到一个时区设置为Z的日期字符串时,这是将时区设置为GMT的标准,相当于0000。然而,我又得到了一个ParseException。下面是日期字符串的一个示例。 提前致谢

  • 问题内容: 我正在尝试使用解析日期时间字符串,但我一直收到不可解析的日期异常。 这是我尝试解析的日期格式: 这是我正在使用的代码: 返回此错误: 据我所知,这是使用SimpleDateFormat类的正确方法,但是我不精通Java,所以我可能会弄错。有人知道我的问题是什么吗? 问题答案: 时区应为GMT-08:00或-0800(如Madcore Tom所说)。请参阅Java文档。 在Java 7中

  • 我有字符串格式的日期,我想解析成使用日期。 我将其解析为: 但奇怪的是,如果我通过"03-08-201309hjhkjhk"或"03-88-2013"或43-88-201378",它不会抛出错误,它会解析它。 现在,我必须编写正则表达式模式来检查日期的输入是否正确。但为什么会这样呢?? 代码:

  • 问题内容: 在照顾了几个现有的帖子之后,我仍然无法使我的SimpleDateFormat解析器正常工作。这是代码: 我总是以ParseException结尾。这是调试消息的输出: 06-09 23:52:17.478:DEBUG / DEBUG(2436):java.text.ParseException:无法解析的日期:06-09 23:52:17.478:DEBUG / DEBUG(2436)