java中的日期类错误

java中的日期类错误,java,date,date-format,simpledateformat,Java,Date,Date Format,Simpledateformat,我有datetoday=新日期()。。但是当我试图在 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,将年份

我有
datetoday=新日期()。。但是当我试图在

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


如何解决此问题?

将整个日期传递给SimpleDateFormat。格式字符串“MM”或“yyyy”将使其仅提取所需日期的一部分。

将整个日期传递给SimpleDataFormat。格式字符串“MM”或“yyyy”将使其仅提取所需日期的一部分。

只需使用
日期
今天
作为输入参数即可

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


只需使用
日期
今天
作为输入参数

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

您正在将一个整数(日期的月份)传递给日期格式方法

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

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

您正在将一个整数(日期的月份)传递给日期格式方法

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

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

today.getMonth()
today.getYear()
返回解释为UNIX时间戳的
int
。该值为
1
113
,对应于此
日期
对象表示的大约
1970年1月1日00:00:01 GMT
1970年1月1日00:01:53 GMT
。要获得所需的结果,您需要传递
Date
对象:

System.out.println(mmFormat.format(today));
today.getMonth()
today.getYear()
返回一个
int
,它被解释为UNIX时间戳。该值为
1
113
,对应于此
日期
对象表示的大约
1970年1月1日00:00:01 GMT
1970年1月1日00:01:53 GMT
。要获得所需的结果,您需要传递
Date
对象:

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

您需要使用日历。看一看这张照片

你可以这样做-

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
对象。另外,如果您想使用另一个日期而不是今天的日期,您只需将
日期
传递给
cal.setTime()
方法。

您需要使用日历。看一看这张照片

你可以这样做-

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
对象。另外,如果您想使用另一个日期而不是今天的日期,您只需将
日期
传递给
cal.setTime()
方法。

这是因为所有这些方法都不推荐使用。使用

 Calendar myCalendar = GregorianCalendar.getInstance();
 myCalendar.get(Calendar.MONTH);
 myCalendar.get(Calendar.YEAR);
 myCalendar.get(Calendar.DAY_OF_MONTH);

这是因为所有这些方法都不推荐使用。使用

 Calendar myCalendar = GregorianCalendar.getInstance();
 myCalendar.get(Calendar.MONTH);
 myCalendar.get(Calendar.YEAR);
 myCalendar.get(Calendar.DAY_OF_MONTH);
这样更好

    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);
这样更好

    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);