【问题标题】:Parsing date - Java解析日期 - Java
【发布时间】:2012-02-03 17:33:27
【问题描述】:

我有一个接受分钟的文本框。 该值将存储在一个变量中 - textBoxVal

我还将日期保存在字符串数组列表中-workDate,其中每个元素的格式为 yyyy-mm-dd HH:mm:ss

要求是将 textBoxVal 值添加到字符串数组列表中的每个元素,并将新值保存在日期数组中 - newWorkDate

例如:

    textBoxVal = 60
    workDate[0] = "2012-02-12 09:00:00.0"
So, newWorkDate[0] should be 2012-02-12 10:00:00.0

这是我目前所拥有的-

int textBoxVal = 0;
ArrayList<String> workDate = new ArrayList<String>();
Date[] newParsedWorkDate = new Date[10];
Date[] newWorkDate = new Date[10];

textBoxVal = getTextBoxValue();
for (int i=0; i< cntr; i++){
workDate[i] = getWorkDate(i);

newParsedWorkDate[i] = DateHelper.parseDate (workDate[i], "yyyy-MM-DD HH:mm:ss"); //Converting string to datetime

newWorkDate[i] = DateHelper.addMinutes(newParsedWorkDate[i], textBoxVal);
}

这里的问题是虽然workDate 是“2012-02-12 09:00:00.0”,newWorkDate 是“2012-01-12 10:00:00.0”,即它添加了 textBoxVal 但设置了日期到前一天。 请帮助我了解我的代码错在哪里。谢谢!

解决方案: 使用 "yyyy-MM-dd HH:mm:ss" 而不是

"yyyy-MM-DD HH:mm:ss"

【问题讨论】:

  • 不是“又一个日期格式问题”?与往常一样,RTFM 的答案是——查看 API,因为它已为您详细说明。
  • @Hovercraft - MYOB。谢谢。

标签: java parsing date


【解决方案1】:

使用MM 表示月份,使用dd 表示月份中的日期。

因此,您需要将格式更改为yyyy-MM-dd HH:mm:ss

请参阅javadocs 以了解模式中字母的含义。

【讨论】:

  • 是的。那是一个错字。它应该是“yyyy-MM-DD HH:mm:ss”。我仍然没有实际问题的答案:)
  • 使用dd,而不是DD 表示每月的一天。
  • 好的。我会试试看是否有助于解决问题。谢谢:)
  • 是的。解决了它!谢谢各位! :D
  • @Pangea 不,应该是 dd(月份中的某天),而不是 DD(年份中的某天)。
【解决方案2】:

yyyy-mm-dd HH:mm:ss 更改为yyyy-MM-dd HH:mm:ssMM 是月份,mm 是分钟。

【讨论】:

  • 啊..是的。那是一个错字。我的代码使用“yyyy-MM-DD HH:mm:ss”。这是正确的格式吗?
  • 不是反过来吗? yyyy-MM-dd HH:mm:ss docs.oracle.com/javase/1.4.2/docs/api/java/text/…
  • @Kennet 您在我更正之前添加了此评论 ;-)。所以我假设你是反对票:-(
  • @Pangea:谢谢你。解决了! :)
  • @user656523 如果这回答了你的问题,那么接受它作为答案
【解决方案3】:

您的日期解析字符串应使用 MM 表示月份,而不是 mm 表示分钟。

【讨论】:

  • 反之。 MM 代表月份,mm 代表分钟
  • 该死。我第一次是对的,然后纠正了自己。我认为现在是正确的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
相关资源
最近更新 更多