在Java(Android)中以YYYY-MM-DD格式获取当前日期

4
我正在尝试获取一个表示当前系统日期的YYYY-MM-DD格式的Date对象。以下是我的尝试:
Date todayDate = Calendar.getInstance().getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd");
String todayString = formatter.format(todayDate);

数值如下:
todayDate: 2017年5月15日星期一 16:24:47 GMT+01:00 todayString: 2017-24-15 尝试过几次后,我发现todayString并不是由YYYY-MM-DD组成的,而是由YYYY-[分钟][分钟]-DD组成的。
如何以YYYY-MM-DD格式获取当前日期?

我看到这是一个重复的问题,但为什么会有负评呢?它已经被标记为重复,并且我不认为这是一个特别差的问题。 - petehallw
我认为这个问题很好,虽然可能希望进行更多的研究,比如查看文档,但它包含了MCVE以及对实际行为的良好观察和描述。 - Ole V.V.
如果可以的话,请使用 LocalDate。它的 toString() 方法会给你想要的格式,不需要使用格式化器。此外,如果你使用带有 mm 而不是 MMDateTimeFormatter,它会告诉你出现了问题(UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour)。 - Ole V.V.
教程:https://docs.oracle.com/javase/tutorial/datetime/iso/date.html。你使用的是哪个Java版本?问这个问题是因为`LocalDate`内置于Java 8和9中,但也适用于Java 6和7。 - Ole V.V.
1
@OleV.V. 我认为在 Java 8 版本之前没有出现这个功能是很疯狂的...感谢提供链接,我正在阅读! - petehallw
显示剩余3条评论
1个回答

5

把这个改成:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd");

转换为:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

mm代表分钟,而MM(大写)代表月份。


回答一个明显重复的问题是没有帮助的。 - Basil Bourque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接