在Java中,我们大多数情况下格式日期都是用的SimpleDateFormat,比如说把一个日期格式成”yyyy-MM-dd”的形式。
我们要注意的是,对于年份来说,大写的Y和小写的y其意义是不同的。
y 是Year, Y 表示的是Week year
经过试验,得出的结果如下:Week year 意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
package com.sheting.basic.time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class YYYYyyyyDiff {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 2014-12-31
calendar.set(2014, Calendar.DECEMBER, 31);
Date strDate1 = calendar.getTime();
// 2015-01-01
calendar.set(2015, Calendar.JANUARY, 1);
Date strDate2 = calendar.getTime();
// 大写YYYY
DateFormat formatUpperCase = new SimpleDateFormat("YYYY/MM/dd");
System.out.println("2014-12-31 to YYYY/MM/dd: " + formatUpperCase.format(strDate1)); // 2014-12-31 to YYYY/MM/dd: 2015/12/31
System.out.println("2015-01-01 to YYYY/MM/dd: " + formatUpperCase.format(strDate2)); // 2015-01-01 to YYYY/MM/dd: 2015/01/01
// 小写yyyy
DateFormat formatLowerCase = new SimpleDateFormat("yyyy/MM/dd");
System.out.println("2014-12-31 to yyyy/MM/dd: " + formatLowerCase.format(strDate1)); // 2014-12-31 to yyyy/MM/dd: 2014/12/31
System.out.println("2015-01-01 to yyyy/MM/dd: " + formatLowerCase.format(strDate2)); // 2015-01-01 to yyyy/MM/dd: 2015/01/01
}
}