有没有其他人遇到SimpleDateFormat.format方法的错误,它返回错误的一年?

时间:2014-12-29 14:46:26

标签: java

我正在使用Oracle java 1.7.0_45,看起来SimpleDateFormat.format方法返回2015年的年度组件而不是2014年。

以下是单元测试:

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

public class Test {

    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("YYYYMMdd");

    public static void main(String[] args) {
        Date today = new Date();
        System.out.println("OS: " + System.getProperty("os.name") + " " + System.getProperty("os.version"));
        System.out.println("Java Vendor: " + System.getProperty("java.vendor"));
        System.out.println("Java Version: " + System.getProperty("java.version"));
        System.out.println("Today: " + today.toString() + " formatted: " + DATE_FORMAT.format(today));
    }
}

以下是单元测试的输出:     操作系统:Mac OS X 10.10.1     Java供应商:Oracle Corporation     Java版本:1.7.0_45     今天:2014年12月29日星期一09:43:00格式化:20151229

3 个答案:

答案 0 :(得分:1)

请改为尝试:

private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
yyyy和YYYY是不同的,因为MM和mm都是。

答案 1 :(得分:1)

使用的模式 - yyyyMMdd

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

public class Test {

    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");

    public static void main(String[] args) {
        Date today = new Date();
        System.out.println("Java Vendor: " + System.getProperty("java.vendor"));
        System.out.println("Java Version: " + System.getProperty("java.version"));
        System.out.println("Today: " + today.toString() + " formatted: " + DATE_FORMAT.format(today));
    }
}

<强>输出

Java Vendor: Sun Microsystems Inc.
Java Version: 1.6.0_31
Today: Mon Dec 29 20:21:17 IST 2014 formatted: 20141229

答案 2 :(得分:1)

请使用yyyyMMddYYYY适用于week Yearsee javadoc),根据您的Locale,有时可能会返回过去一年的第53周使用早期日期或第1周使用12月下旬的新年。