0

我有Date today=new Date();哪个返回当前日期..但是当我尝试在帮助下分别显示日期、月份、年份时

DateFormat mmFormat=new SimpleDateFormat("MM"); 
System.out.println(mmFormat.format(today.getMonth()));
DateFormat yyFormat=new SimpleDateFormat("yyyy"); 
System.out.println(yyFormat.format(today.getYear()));

它打印月份为 01,年份为 1970

如何解决这个问题。?

4

7 回答 7

3
mmFormat.format(today.getMonth())

您将整数(日期的月份)传递给日期格式方法。

format 方法将该整数解释为 UNIX 时间戳——自 1970 年以来的秒数。

您需要将日期本身传递给格式化程序。

于 2013-07-01T17:43:56.247 回答
0

将整个日期传递给 SimpleDateFormat。格式字符串“MM”或“yyyy”将导致它只提取您想要的日期部分。

于 2013-07-01T17:42:30.837 回答
0

只需使用Date today作为输入参数

System.out.println(mmFormat.format(today));

System.out.println(yyFormat.format(today));
于 2013-07-01T17:42:41.913 回答
0

today.getMonth()today.getYear()返回一个int被解释为 UNIX 时间戳的。值为1113,近似对应于January 1, 1970, 00:00:01 GMTJanuary 1, 1970, 00:01:53 GMT由该Date对象表示。要获得所需的结果,您需要传递Date对象:

System.out.println(mmFormat.format(today));
于 2013-07-01T17:45:18.463 回答
0

您将需要使用日历。看看java 文档

你可以这样做 -

Calendar cal = Calendar.getInstance();

System.out.println(cal.get(Calendar.DAY_OF_MONTH));
System.out.println(cal.get(Calendar.MONTH)); // month in the Calendar class begins from 0
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(cal.get(Calendar.MINUTE));
System.out.println(cal.get(Calendar.SECOND));

这将帮助您避免创建多个DateFormat对象。此外,如果您想使用另一个日期而不是今天的日期,您可以将 传递date给该cal.setTime()方法。

于 2013-07-01T17:45:24.237 回答
0

那是因为所有这些方法都已弃用。采用

 Calendar myCalendar = GregorianCalendar.getInstance();
 myCalendar.get(Calendar.MONTH);
 myCalendar.get(Calendar.YEAR);
 myCalendar.get(Calendar.DAY_OF_MONTH);
于 2013-07-01T17:48:12.480 回答
0

这种方式更好

    Date date=new Date(); // your date
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);
    System.out.println(year+"\n"+month);
于 2013-07-01T17:52:43.137 回答