【问题标题】:Why is SimpleDateFormat parsing Date with wrong Month and Day? [duplicate]为什么 SimpleDateFormat 用错误的月份和日期解析日期? [复制]
【发布时间】:2019-04-10 10:47:46
【问题描述】:
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM DD HH:mm:ss z yyyy");
try {
      String d1 = list.get(position).getTaskTime(); //here d is "Tue Nov 06 15:37:51 EST 2016"
      date = sdf.parse(d);
      String d2=date.toString();
      Log.d("demo", d2); //here d2 is "Sat Jan 06 15:37:51 EST 2016"
  } catch (ParseException e) {
      e.printStackTrace();
     }

PS:我使用 Calendar 类添加了 10 个月,并正确设置了日期,这有点像 hack,但很有效。但是,我想知道我的代码出了什么问题。

【问题讨论】:

  • 请不要链接到图片。相反,请编辑您的问题以显示这些值是什么以及它们如何不正确。
  • 我第一次在这里发帖。我只是使用了可用的选项。该链接是由 stackoverflow 生成的。无论如何,我更新了帖子。谢谢!
  • 发帖前一定要彻底搜索 Stack Overflow。
  • 顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。
  • 看来getTaskTime( 正在返回一个String,你应该有一个方法来返回一个日期时间对象,这样你就根本不需要解析。返回类型为DateInstant(我推荐后者)。

标签: java android string date simpledateformat


【解决方案1】:

DD 是错误的。 D 是一年中的某一天。一年中的第六天是 1 月 6 日。

你应该使用dd

文档:SimpleDateFormat

【讨论】:

  • 谢谢!我不知道有一个字母来指定一年中的哪一天。我假设 D 是日期。我知道这是一个愚蠢的错误,但不知道是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
相关资源
最近更新 更多