从日历中获取日期

use*_*277 1 java 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);
Run Code Online (Sandbox Code Playgroud)

输出是:

day = 18
month = 1
year = 2015
Run Code Online (Sandbox Code Playgroud)

我的问题是,我想在这种情况下获得月份,例如 01 而不是 1,因为该值稍后会在我的代码中解析并且需要采用该格式。在 1 之前附加 0 是丑陋的,所以任何人都知道输入代码这里有更好的方法来做到这一点?谢谢

was*_*ren 6

如果您需要将数据作为“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
Run Code Online (Sandbox Code Playgroud)

您还可以像这样格式化完整日期:

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

SimpleDateFormat的JavaDoc充分解释了各种格式选项。请注意,这SimpleDateFormat不是线程安全的。