为什么 Java SimpleDateFormat().parse() 打印奇怪的格式?

发布于 2024-08-25 13:32:07 字数 717 浏览 14 评论 0原文

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

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)?为什么日期是错误的?我只是想保持原始 String 日期的相同格式并将其变成 Date 对象。

我使用的是 Netbeans 6.8 Mac 版本。

My input is String formated as the following:

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

My code is:

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();
            }

the output is:

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

I'm not sure from where the day (Sun) came from? or (AST)? and why the date is wrong? I just wanted to keep the same format of the original String date and make it into a Date object.

I'm using Netbeans 6.8 Mac version.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

厌倦 2024-09-01 13:32:07

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

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");

Should be MM, not mm. The lowercase mm is for minutes, not months.

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
一绘本一梦想 2024-09-01 13:32:07

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

MM, not mm for months. You are using mm twice - and logically, it's the same things - minutes.

孤独患者 2024-09-01 13:32:07

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

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

the "weird" format comes from Date's toString implementation, the javadoc says:


Converts this Date object to a String of the form:

道琼斯指数 dd hh:mm:ss zzz yyyy

"I just wanted to keep the same format of the original String date and make it into a Date object."

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

If you want to print the date in the original format, use the format method:

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

the "weird" format comes from Date's toString implementation, the javadoc says:


Converts this Date object to a String of the form:

dow mon dd hh:mm:ss zzz yyyy

"I just wanted to keep the same format of the original String date and make it into a Date object."

The Date Object is intended to represent a specific instant in time, you can't keep the format of the original string into it, that's why we have the DateFormat Class.

绾颜 2024-09-01 13:32:07

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

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

The answer is simple. You have displayed the Date.toString() value of today and not the intended dateFormat version. what you require is:

System.out.println("Date Time : " + dateFormat.format(today) );
究竟谁懂我的在乎 2024-09-01 13:32:07

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

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

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

Printing the Date out using System.out.println() results in the toString() method being called on the Date object.

The format string used in toString() is what is causing the Day of the week and the timezone to appear in the output.

This is apart from the parsing mistake pointed out by Duffy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文