2017-10-12 269 views
-1

我在Calendar.getInstance().getTime()中遇到问题,它返回一个不合逻辑的月份编号。像41/12/2017Calendar.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无法修复该错误。

有帮助吗?

+0

使用MM而不是mm – SachinSarawgi

+0

几个月从0开始索引不是1,所以10月份是11月份,11月份是12月份。 –

+0

噢谢谢@SachinSarawgi其工作对我来说很感谢alote – maiajam

回答

1

你应该使用MM(月)

MM -->10 
MMM -->Nov 
MMMM -->November 

示例代码

startDate.setText(new SimpleDateFormat("MM/dd/yy",Locale.getDefault()).format(Calendar.getInstance().getTime()).toString()); 
+0

非常感谢它的工作对我来说是正确的 – maiajam

+0

最欢迎@maiajam高兴地帮助你 –

+0

感谢对不起我的声望低所以不能投票你的答案 – maiajam

1

mm在一小时内停留几分钟。你需要的是MM,一年中的月份。

startDate.setText(new SimpleDateFormat("MM/dd/yy",Locale.getDefault()).format(Calendar.getInstance().getTime()).toString()); 

你可以阅读更多有关模式here

0

在SimpleDateFormat的 “M” 代表 “中,小时,分钟”。

如果您想获取月份,请使用以下模式“MM/dd/yyyy”。

此外,确保如果你想使用 “YYYY” 或代替毫米(以小时,分钟) “YYYY”

检查this

0

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或更高版本中的旧类的新方法,在旧类和现代类之间进行转换。如果使用后端端口,请参阅其实用程序。

相关问题