我在将字符串日期解析为Date对象时遇到了一些麻烦。我使用DateFormat解析字符串,当我打印日期值时,它给了我期望。

但是,当我尝试获取日期,月份或年份时,会给我错误的值。例如,年份是2011,但是当我执行.getYear()时,它的数值为111。我不知道为什么会这样。这是相关的代码段:

    Date dateFrom = null;

    String gDFString = g.getDateFrom();

    System.out.println(gDFString);

    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

    try {
        dateFrom = df.parse("04/12/2011");

        System.out.println(dateFrom);

        System.out.println(dateFrom.getYear());
    } catch (ParseException e) {
        e.printStackTrace();
    }

当我打印dateFrom时,我得到Sun Dec 04 00:00:00 GMT 2011,这就是您所期望的。但是打印.getYear()返回111

我需要能够获取时间序列图的日期,月份和年份。

最佳答案

这些方法已被弃用。而是使用Calendar类。

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public final class DateParseDemo {
    public static void main(String[] args){
         final DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
         final Calendar c = Calendar.getInstance();
         try {
             c.setTime(df.parse("04/12/2011"));
             System.out.println("Year = " + c.get(Calendar.YEAR));
             System.out.println("Month = " + (c.get(Calendar.MONTH)));
             System.out.println("Day = " + c.get(Calendar.DAY_OF_MONTH));
         }
         catch (ParseException e) {
             e.printStackTrace();
         }
    }
}

输出:
Year = 2011
Month = 3
Day = 12

至于month字段,则从0开始。这意味着一月= 0,十二月=11。如javadoc所述,

关于java - 为什么Java的Date.getYear()返回111而不是2011?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7215621/

10-11 14:39