在Java中将格式化日期作为Calendar或Date对象读取

时间:2014-12-16 07:44:32

标签: java

我正在尝试从Java中日期的String表示创建一个DateCalendar对象。我尝试使用 SimpleDateFormat.parse,但产生的结果与我输入的结果完全不同。有人可以解释我在这里做错了吗?

import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.*;
class IdeOne
{
  public static void main (String[] args) throws java.lang.Exception
  {
    SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMdd");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date dt = sdf.parse("20141208");
    System.out.println(dt.getDay() + " " + dt.getMonth() + " " + dt.getYear());
    System.out.println(sdf.format(dt));
  }
}

我正在获得输出

0 11 113
20141229

2 个答案:

答案 0 :(得分:1)

年份必须使用较低的y:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

因为上Y是周年。有关更多信息,请阅读SimpleDateFormat的documentation

答案 1 :(得分:0)

尝试使用此:

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date dt = sdf.parse("20141208");
                Calendar c=Calendar.getInstance();
                c.setTime(dt);
                System.out.println(c.get(Calendar.DAY_OF_MONTH) + " " + c.get(Calendar.MONTH)+ " " + c.get(Calendar.YEAR));
        System.out.println(sdf.format(dt));
    }
}