大家好,我的程序中的每个人都收到了这样的日期: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 是丑陋的,所以任何人都知道输入代码这里有更好的方法来做到这一点?谢谢
如果您需要将数据作为“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不是线程安全的。