【问题标题】:SimpleDateFormat parse() gives incorrect resultSimpleDateFormat parse() 给出不正确的结果
【发布时间】:2011-10-27 21:03:12
【问题描述】:

默认时区 GMT-3.00。 我正在使用 SimpleDateFormat 的 parse 方法解析 new Date("1900/01/01").toString。

我得到的结果是 1899 年 12 月 31 日星期日 23:15:16 代替 1 月 1 日星期一 00:00:00 UYT 1900

我不明白为什么结果不同。

PS:如果我将 TimeZone 更改为 GMT +5.30,结果符合预期。

【问题讨论】:

标签: java


【解决方案1】:

根据UYT timezone changes at timeanddate.com,UYT 时区是 1920 年之前的 UTC-3.44.44,而不是 UTC-3.00,因此您的结果看起来是正确的。

【讨论】:

  • 你好,可以发一下链接吗?
  • 非常感谢。但是,有没有办法我们可以得到预期的结果..?
【解决方案2】:

你在用这个代码吗?

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/dd/MM");
    System.out.println(sdf.parse("1900/01/01"));

也许你弄错了符号...

【讨论】:

  • 日期 d = new Date("1900/01/01"); SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); System.out.println(sdf.parse(d.toString));
  • 这是你的问题 - 你给 SimpleDateFormat 的字符串是错误的。
  • 但是它应该抛出一个它没有抛出的运行时异常。如果字符串错误,那么它不应该首先解析日期吗?
  • 日期 d = new Date("1900/01/01"); SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); System.out.println(sdf.parse(d.toString()));线程“主”java.text.ParseException 中的异常:无法解析的日期:“1900/01/01”
猜你喜欢
  • 1970-01-01
  • 2018-07-11
  • 2012-08-27
  • 2017-12-14
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多