【问题标题】:String to Date gives wrong resultString to Date 给出错误的结果
【发布时间】:2015-12-19 07:44:16
【问题描述】:

我有:

String t = "Sep 17, 2015 00:00:00"
DateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date date = format.parse(t);

我在这里做错了什么,因为每次我尝试解析时都会遇到异常。

【问题讨论】:

  • 你的格式有误
  • Sep 17, 2015 00:00:00dd.MM.yyyy有什么关系?
  • @MadProgrammer dd.MM.yyyy 是我以后想要的。我不需要所有的零。
  • 这是否意味着您会接受我的回答(尽管存在争议),看起来它是正确的?
  • @HHH 好的,但首先你需要将String 值转换为Date 值,一旦你有了Date 值,那么你可以以任何你喜欢的方式格式化。 Date 没有格式的概念,它是自 Unix 纪元以来毫秒数的容器,因此您无法使用预定义格式制作 Date

标签: java string date


【解决方案1】:

您的日期是错误的。改为:

String t = "Sep 17, 2015 00:00:00"
DateFormat format = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss");
Date date = format.parse(t);

更多信息参见SimpleDateFormat的javadoc

我理解你的评论是对的,你想要一个格式为 dd.MM.yyy 的字符串。

所以你必须创建一个 SecondDateFromat 来格式化字符串

DateFormat format1 = new SimpleDateFormat("dd.MM.yyyy");
String result = format1(date);

【讨论】:

  • @Jens 感谢您的回答。我使用错误格式的原因是因为我希望它成为我的结果。因此,尽管稍后我有其他东西我的字符串,但我只需要它我如何写我的问题。你知道怎么做吗?
  • @HHHH 我找不到你。您的意思是将日期重新格式化为 dd.MM.yyyy 中的字符串?
【解决方案2】:

日期和日期格式不匹配。您可以更改日期以匹配您的格式(反之亦然)

 String t = "17.09.2015"
 DateFormat format = new SimpleDateFormat("dd.MM.yyyy");
 Date date = format.parse(t);

【讨论】:

  • 他的要求中并没有这样说,所以在没有明确方向的情况下,可能是[您可以更改日期以匹配您的格式(反之亦然)]。跨度>
  • 真的是约翰??我想(用我的评论)鼓励你改进答案以获得一些支持(我的第一个),现在,你有我的反对...
  • 嗨 Jordi,你能指出他无法控制日期输入字符串格式的部分吗?我可以肯定地看到不匹配,但没有任何迹象表明这不是(例如)他可以控制他正在处理的字符串格式的学校作业。
  • 那是不幸的 Jordi,我觉得有点情绪化。 @Rehman 以相反的格式回答。两个相同的答案有什么意义?该代码简单地显示了如何更改日期以匹配他拥有的格式。
  • 希望我们能同意不同意吗?我很佩服你对软件开发的热情,虽然我对这个问题有不同的看法(我相信未来我们可以找到一些共同点)!
【解决方案3】:

当您使用“dd.MM.yyyy”作为日期格式时,您的输入应该是 17.09.2015 而不是“Sep 17, 2015 00:00:00” 所以你有两个选择:要么,

String t = "Sep 17, 2015 00:00:00";
        DateFormat format = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss");
        try {
            Date date = format.parse(t);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

String t = "17.09.2015";
        DateFormat format = new SimpleDateFormat("dd.mm.yyyy");
        try {
            Date date = format.parse(t);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

【讨论】:

  • 如果由于日期来自文件或表单等而无法更改日期,您如何解决?
  • 在这种情况下需要更改格式:“MMM dd, yyyy HH:mm:ss”
  • @Jordi Castilla 编辑了我的答案
  • @Jordi Castilla 感谢好友
猜你喜欢
  • 2020-12-19
  • 2014-04-21
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 2014-09-16
  • 2011-10-22
相关资源
最近更新 更多