我在将字符串日期解析为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/