1

我的输入是字符串,格式如下:

3/4/2010 10:40:01 AM
3/4/2010 10:38:31 AM

我的代码是:

DateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss aa");
            try
            {
                Date today = dateFormat.parse(time);
                System.out.println("Date Time : " + today);

            }
            catch (ParseException e)
            {
                e.printStackTrace();
            }

输出是:

Sun Jan 03 10:38:31 AST 2010
Sun Jan 03 10:40:01 AST 2010

我不确定这一天(太阳)是从哪里来的?还是(AST)?为什么日期是错误的?我只是想保持原始字符串日期的相同格式并将其转换为Date对象。

我正在使用 Netbeans 6.8 Mac 版本。

4

5 回答 5

7

应该是MM,不是mm。小写的 mm 代表分钟,而不是月。

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
于 2010-03-21T09:41:10.460 回答
4

MM,而不是mm几个月。您使用mm了两次-从逻辑上讲,这是相同的事情-分钟。

于 2010-03-21T09:42:16.957 回答
3

如果要以原始格式打印日期,请使用 format 方法:

System.out.println("Date Time : "+ dateFormat.format(today));

“奇怪”的格式来自 Date 的 toString 实现,javadoc 说: 将此 Date 对象转换为形式的字符串:

dow mon dd hh:mm:ss zzz yyyy

“我只是想保持与原始字符串日期相同的格式,并将其变成一个 Date 对象。”

Date 对象旨在表示特定的时间瞬间,您不能将原始字符串的格式保留在其中,这就是我们有 DateFormat 类的原因。

于 2010-03-21T09:43:59.750 回答
2

答案很简单。您显示了今天的 Date.toString() 值,而不是预期的 dateFormat 版本。你需要的是:

System.out.println("Date Time : " + dateFormat.format(today) );
于 2010-03-21T09:46:43.107 回答
1

使用 System.out.println() 打印日期会导致对 Date 对象调用toString()方法。

toString() 中使用的格式字符串是导致星期几和时区出现在输出中的原因。

这与 Duffy 指出的解析错误不同。

于 2010-03-21T09:41:56.847 回答