簡體   English   中英

從日歷獲取日期

[英]Get date from calendar

大家好,我收到的日期是:2015-01-18

這是一個日歷對象,我需要從該對象獲取日,月和年。 現在我做類似的事情:

int day = date.get(Calendar.DAY_OF_MONTH);
int month = date.get(Calender.MONTH + 1);
int year = date.get(Calender.Year);

輸出為:

day = 18
month = 1
year = 2015

我的問題是,在這種情況下,我想獲取月份,例如01而不是1,因為該值稍后會在我的代碼中解析,並且需要采用該格式。 將0附加在1之前是丑陋的,以便任何人都知道的代碼提供了一種更好的方法嗎? 謝謝

如果您需要將數據傳遞為“ 01”,則int是錯誤的數據類型。 您需要將其作為String傳遞。 您可以使用SimpleDateFormat格式化日期。 這樣,您可以選擇要從日期和格式中選擇的元素。 例:

final Calendar calendar = Calendar.getInstance();
final Date date = calendar.getTime();
String day = new SimpleDateFormat("dd").format(date);    // always 2 digits
String month = new SimpleDateFormat("MM").format(date);  // always 2 digits
String year = new SimpleDateFormat("yyyy").format(date); // 4 digit year

您也可以像這樣格式化完整日期:

String full = new SimpleDateFormat("yyyy-MM-dd").format(date); // e.g. 2015-01-18

用於SimpleDateFormatJavaDoc完整說明了各種格式設置選項。 請注意, SimpleDateFormat不是線程安全的。

你需要

int month = cal.get(Calender.MONTH) + 1; // 0..11 -> 1..12

獲取月份的int(+必須在參數之外)。

如果您需要一個從該整數開始以零開頭的字符串,則可以使用textformat:

System.out.printf("month=%02d%n", month);
String monthStr = String.format("%02d", month);

但是,實際上您不必通過int進行路由,您可以將Date一部分直接格式化為字符串:

monthStr = new SimpleDateFormat("MM", Locale.ENGLISH).format(cal.getTime());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM