Calendar.getInstance().getTime()返回一个错误的日期确切的月份编号
问题描述:
我在Calendar.getInstance().getTime()
中遇到问题,它返回一个不合逻辑的月份编号。像41/12/2017
。Calendar.getInstance().getTime()返回一个错误的日期确切的月份编号
我试图用new Date()
来获取当前时间,使用
startDate.setText(new SimpleDateFormat("mm/dd/yy",Locale.getDefault()).format(new Date()).toString());
我搜索新的Date()时,也得到同样的错误(不合逻辑的月数)
startDate.setText(new SimpleDateFormat("mm/dd/yy",Locale.getDefault()).format(Calendar.getInstance().getTime()).toString());
也一样在这里,但没有发现 - 只是试图改变压延级和使用new Date()
并得到相同的结果
我也试着清理亲ject,检查模拟器日期设置,手机设置bu无法修复该错误。
有帮助吗?
答
mm
在一小时内停留几分钟。你需要的是MM
,一年中的月份。
startDate.setText(new SimpleDateFormat("MM/dd/yy",Locale.getDefault()).format(Calendar.getInstance().getTime()).toString());
你可以阅读更多有关模式here
答
在SimpleDateFormat的 “M” 代表 “中,小时,分钟”。
如果您想获取月份,请使用以下模式“MM/dd/yyyy”。
此外,确保如果你想使用 “YYYY” 或代替毫米(以小时,分钟) “YYYY”
检查this
答
java.time
其他答案对您的格式模式不正确是正确的。
更好的是,抛弃麻烦的旧日期时间课程。这些现在被java.time类取代。
考虑到时区至关重要来确定当前日期。对于任何特定时刻,日期因地区而异。例如,在Pacific/Auckland
之前的新的一天早于America/Montreal
。
ZoneId z = `America/Los_Angeles` ;
LocalDate today = LocalDate.now(z) ;
让java.time自动定位到您想要的格式。
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.US) ;
String output = today.format(f) ;
对于Java 6 & 7,看到ThreeTen-反向移植项目。对于较旧的Android,请参阅ThreeTenABP项目。
如有必要,通过调用添加到Java 8或更高版本中的旧类的新方法,在旧类和现代类之间进行转换。如果使用后端端口,请参阅其实用程序。
使用MM而不是mm – SachinSarawgi
几个月从0开始索引不是1,所以10月份是11月份,11月份是12月份。 –
噢谢谢@SachinSarawgi其工作对我来说很感谢alote – maiajam