解析日期 - Java

问题描述:

我有一个接受分钟的文本框。 这个值将被存储在变量 - textBoxVal解析日期 - Java

我也有保存在Arraylist- 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但将日期设置为前一天。 请帮我理解我的代码错在哪里.Thx!

SOLUTION: 使用的"yyyy-MM-dd HH:mm:ss"代替

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

不是“又一个日期格式问题”吗?一如既往的答案是RTFM - 看看API,因为它都是为你拼写的。 – 2012-02-03 17:48:48

+0

@ Hovercraft - MYOB.Thank you。 – user656523 2012-02-03 17:58:59

使用MM表示月份,而dd表示月份中的某一天。

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

查看javadocs了解图案中的字母的含义。

+0

是的,那是一个错字。它应该是“yyyy-MM-DD HH:mm:ss”。我仍然没有对实际问题的答案:) – user656523 2012-02-03 17:42:47

+0

在一个月中使用'dd',而不是'DD'。 – dogbane 2012-02-03 17:43:37

+0

好吧,我会试试看,看看它是否有助于解决这个问题。谢谢:) – user656523 2012-02-03 17:44:59

变化yyyy-mm-dd HH:mm:ssyyyy-MM-dd HH:mm:ssMM为一个月,mm为几分钟。

+0

Ahh..yes.That是一个错字。我的代码使用“yyyy-MM-DD HH:mm:ss”。这是正确的格式吗? – user656523 2012-02-03 17:41:11

+0

@ user656523是 – 2012-02-03 17:42:21

+0

难道不是这样吗? yyyy-MM-dd HH:mm:ss http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html – Kennet 2012-02-03 17:42:25

你的日期分析字符串应该使用MM几个月,而不是mm这是几分钟。

+0

-1分钟是'mm',而月是'MM'。 – dogbane 2012-02-03 17:40:55

+0

这是另一回事。 MM代表月份,mm代表分钟 – 2012-02-03 17:41:07

+0

当然。我第一次做对了,然后纠正了自己。我认为现在是正确的。 – Freiheit 2012-02-03 17:46:07