1、yyyy与YYYY
public static void main(String[] args) {
DateTime date = new DateTime(2019, 12, 31, 0, 0);
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd");
System.out.println(format.format(date.toDate()));
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(format2.format(date.toDate()));
}
输出结果:
2020-12-31
2019-12-31
YYYY是week-based-year,表示当天所在的周属于的年份,一同从周日开始,周六结束,只要本周跨年那么这周就算入下一个年份中。所以2019年12月31日那天在这种转换方式下就是2020年。而当倩yyyy这种情况下年份就是2019。
2、MM与mm
这个比较好区分,MM:表示月份;mm:表示分钟
3、DD与dd
Calendar calendar = Calendar.getInstance();
// 2019-12-31
calendar.set(2019, Calendar.DECEMBER, 31);
Date strDate1 = calendar.getTime();
// 2020-01-01
calendar.set(2020, Calendar.JANUARY, 1);
Date strDate2 = calendar.getTime();
// 大写 YYYY
SimpleDateFormat formatYYYY = new SimpleDateFormat("YYYY/MM/dd");
System.out.println("2019-12-31 转 YYYY/MM/dd 格式: " + formatYYYY.format(strDate1));
// System.out.println("2020-01-01 转 YYYY/MM/dd 格式: " + formatYYYY.format(strDate2));
// // 小写 YYYY
SimpleDateFormat formatyyyy = new SimpleDateFormat("yyyy/MM/DD");
System.out.println("2019-12-31 转 yyyy/MM/dd 格式: " + formatyyyy.format(strDate1));
// System.out.println("2020-01-01 转 yyyy/MM/dd 格式: " + formatyyyy.format(strDate2));
输出结果:2019-12-31 转 YYYY/MM/dd 格式: 2020/12/31
2019-12-31 转 yyyy/MM/dd 格式: 2019/12/365
DD格式是指当前日期在当年中的天数,今天正好是当年的最后一天,导致字符串多了一位,事实上我这里的本意是当月日期,应该改用dd格式。
4、HH与hh
输出结果:2019-12-31 转 YYYY/MM/dd 格式: 2020/12/31 154958
2019-12-31 转 YYYY/MM/dd 格式: 2020/12/31 034958
HH是24小时制,hh是12小时制
5、SS与ss
输出结果:2019-12-31 转 YYYY/MM/dd HHmmss 格式: 2020/12/31 155805
2019-12-31 转 YYYY/MM/dd HHmmSS格式: 2020/12/31 1558101
ss表示秒,SS输出的是毫秒
6、
String nowtime = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
System.out.println(nowtime);
yyyyMMddHHmmssSSS
输出结果:20211227155805103
注释:类似这样的格式,4位年2位月2位日2位时2位分2位秒3位毫秒