yyyyMMdd,YYYYMMdd,yyyymmdd有什么区别
YYYYMMdd
简而言之,YYYY是week-based-year,表示:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。所以2019年12月31日那天在这种表述方式下就已经 2020 年了。而当使用yyyy的时候,就还是 2019 年。
举例说明:
public static void main(String[] args) {
//2019-12-29至2020-1-4跨年周
Calendar calendar = Calendar.getInstance();
//2019-12-28
calendar.set(2019, Calendar.DECEMBER, 28);
Date strDate1 = calendar.getTime();
//2019-12-29
calendar.set(2019, Calendar.DECEMBER, 29);
Date strDate2 = calendar.getTime();
// 2019-12-31
calendar.set(2019, Calendar.DECEMBER, 31);
Date strDate3 = calendar.getTime();
// 2020-01-01
calendar.set(2020, Calendar.JANUARY, 1);
Date strDate4 = calendar.getTime();
DateFormat df1 = new SimpleDateFormat("yyyyMMdd");
DateFormat df2 = new SimpleDateFormat("YYYYMMdd");
//yyyyMMdd
System.out.println("yyyyMMdd");
System.out.println("2019-12-28: " + df1.format(strDate1));
System.out.println("2019-12-29: " + df1.format(strDate2));
System.out.println("2019-12-31: " + df1.format(strDate3));
System.out.println("2020-01-01: " + df1.format(strDate4));
//YYYYMMdd
System.out.println("YYYYMMdd");
System.out.println("2019-12-28: " + df2.format(strDate1));
System.out.println("2019-12-29: " + df2.format(strDate2));
System.out.println("2019-12-31: " + df2.format(strDate3));
System.out.println("2020-01-01: " + df2.format(strDate4));
}
输出结果:
yyyyMMdd
2019-12-28: 2091228
2019-12-29: 20191229
2019-12-31: 20191231
2020-01-01: 20200101
YYYYMMdd
2019-12-28: 20191228
2019-12-29: 20201229
2019-12-31: 20201231
2020-01-01: 20200101
yyyymmdd
在oracle中时间格式,yyyy-mm-dd 和yyyy-MM-dd 效果是一样的,但是在Java代码中却是不一样的,
举个例子:
将"2014-09-30"String 类型转换成Date类型
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
DateFormat dd = new SimpleDateFormat("yyyy-mm-dd");
try {
Date da = dd.parse("2014-09-30");
System.out.println(da);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
运行结果为:
Thu Jan 30 00:09:00 CST 2014 : 是1月,0点09分,说明把9月当成了分钟来处理,出现这样的原因是java中时间格式MM和mm是不一样的.需要将yyyy-mm-dd改成yyyy-MM-dd