4

我有一个简单的方法应该获取当前日期,将其转换为某种格式,然后将其作为字符串返回。到目前为止,一切都很好(最后一次尝试是在 1 月 31 日左右),但由于某种原因,当我今天尝试它时,它返回字符串“2013-02-43”。

现在显然二月份没有 43 天,我不知道为什么它会返回这个。我到处寻找解决方案,但似乎没有一个适合我遇到的具体问题。这是代码:

public String getDate(){
    DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD");
    Date date = new Date();

    return dateFormat.format(date);
}

只是为了记录,我尝试使用 Calendar.getInstance() 等,结果相同。有趣的是,当我尝试

get(Calendar.DAY_OF_MONTH) 

它返回 12,所以某个地方的数字是正确的,但在两者之间出现了问题。

谢谢

4

9 回答 9

17

DD表示一年中的某一天,而dd表示月份中的某一天。此外,Y表示周年,而y表示年。你想要yyyy-MM-dd(区分大小写)。

public String getDate(){
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date = new Date();

    return dateFormat.format(date);
}
于 2013-02-12T15:35:04.903 回答
4

a中的大写DDateFormat是年份中的日期。您想要月份的日期:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
于 2013-02-12T15:35:49.093 回答
3

试试这个:“yyyy-MM-dd”

区分大小写很重要。“DD”是一年中的一天。

于 2013-02-12T15:35:21.923 回答
2
于 2016-12-24T20:05:28.730 回答
1

您可能希望使用带有小写 d 的格式“yyyy-MM-dd”。大写 D 是年中日的格式。您可以在此处找到日期模式的概述。

于 2013-02-12T15:35:22.627 回答
1

阅读SimpleDateFormat 的 javadocY不存在,D是一年中的一天。你想yyyy-MM-dd作为你的模式。

于 2013-02-12T15:36:35.897 回答
0

您的格式字符串应该是"YYYY-MM-dd"而不是"YYYY-MM-DD".

DD是“年中的日”,dd而是“月中的日”。

查看参考

于 2013-02-12T15:35:37.570 回答
0

看起来日期格式应该是小写的

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

返回 2013-02-12

否则返回一年中的某一天。

请参阅SimpleDateFormat API页面以获取接受的格式模式的完整列表。

于 2013-02-12T15:37:22.427 回答
0

使用以下代码:

SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd");
Date date = new Date();
System.out.println(df.format(date));

它应该是dd而不是DD

于 2013-02-12T15:43:46.483 回答