令人难以置信的java时间机器

时间:2013-06-28 14:31:35

标签: java date simpledateformat

使用此示例代码我的时间/日期会发生什么?

package date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class DateFormatTest
{
    public static void main(String args[]) throws ParseException
    {
        final String pattern = "dd/MM/YYYY HH:mm";
        final Locale locale = Locale.FRENCH;
        final SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);

        Date d = new Date();
        System.out.println("Today: " + d);

        String parsedDate = formatter.format(d);
        System.out.println("Today as string:" + parsedDate);

        Date d2 = formatter.parse(parsedDate);
        System.out.println("Today parsed back:" + d2);

    }
}

输出:

Today: Fri Jun 28 16:28:04 CEST 2013
Today as string:28/06/2013 16:28
Today parsed back:Mon Dec 31 16:28:00 CET 2012    >>> ????

2 个答案:

答案 0 :(得分:10)

pattern = "dd/MM/YYYY HH:mm";

应该是

pattern = "dd/MM/yyyy HH:mm";

请参阅JavaDoc

但请注意,您发布的此代码甚至不能在我的Eclipse上运行:

java.lang.IllegalArgumentException: Illegal pattern character 'Y'

<击>

啊,Y is added in Java 7。但它是weekyear

答案 1 :(得分:1)

很少解释,但只是猜测,如果我错了,请纠正我。

正如explanation of week year我想解析2013年的一周(由于错误的模式2013 - &gt; YYYY)以某种方式将整个日期设置为2013年的第一周,即周一31 / 12/2012