2017-10-12 275 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或更高版本中的舊類的新方法,在舊類和現代類之間進行轉換。如果使用後端端口,請參閱其實用程序。

相關問題