环境:
jdk:1.8
oralce:10g
这里简单的说下区别:
1.字符串转日期测试
这里的日期在YYYY下的转换规律待定,目前还不清楚
在yyyy是正常的
2.日期转字符串测试
这里的日期在YYYY下的转换规律:当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年
在yyyy是正常的
3.orale:不区分大小写格式,所以不存在问题,相当于java的yyyy
场景1: java场景
public static void main(String[] args) {
testDate1();
testDate2();
}
public static void testDate1() {
System.out.println("字符串转日期测试");
//SimpleDateFormat测试
SimpleDateFormat sf1 = new SimpleDateFormat("YYYY-MM-dd");
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1 = sf1.parse("2020-12-26");
Date d2 = sf1.parse("2020-12-26");
Date d3 = sf1.parse("2020-12-27");
Date d4 = sf2.parse("2020-12-27");
System.out.println("字符串转日期YYYY" + d1.toLocaleString());
System.out.println("字符串转日期YYYY" + d2.toLocaleString());
System.out.println("字符串转日期YYYY" + d3.toLocaleString());
System.out.println("字符串转日期yyyy" + d4.toLocaleString());
} catch (ParseException e) {
e.printStackTrace();
}
//DateTimeFormatter测试 DateTimeFormatter不支持YYYY
DateTimeFormatter dt1 = DateTimeFormatter.ofPattern("YYYY-MM-dd");
DateTimeFormatter dt2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
//经过测试,该解析会抛异常,如果要正常解析,那么估计要自定义Formatter
//Exception in thread "main" java.time.format.DateTimeParseException: Text '2020-12-26' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=26, WeekBasedYear[WeekFields[SUNDAY,1]]=2020, MonthOfYear=12},ISO of type java.time.format.Parsed
//LocalDate date1 = LocalDate.parse("2020-12-26", dt1);
//LocalDate date2 = LocalDate.parse("2020-12-27", dt1);
LocalDate date3 = LocalDate.parse("2020-12-27", dt2);
System.out.println("字符串转日期" + date3);
}
public static void testDate2() {
System.out.println("日期转字符串测试");
SimpleDateFormat sf1 = new SimpleDateFormat("YYYY-MM-dd");
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
//这里设置的是2020-12-26
c.set(Calendar.MONTH, 11);
c.set(Calendar.DATE, 26);
System.out.println(sf1.format(c.getTime()));
System.out.println(sf2.format(c.getTime()));
c.add(Calendar.DATE, 1);
System.out.println("日期转字符串" + sf1.format(c.getTime()));
System.out.println("日期转字符串" + sf2.format(c.getTime()));
//java8的测试
DateTimeFormatter dt1 = DateTimeFormatter.ofPattern("YYYY-MM-dd");
DateTimeFormatter dt2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date1 = LocalDate.of(2020, 12, 26);
LocalDate date2 = LocalDate.of(2020, 12, 27);
System.out.println("日期转字符串" + date1.format(dt1));
System.out.println("日期转字符串" + date2.format(dt1));
System.out.println("日期转字符串" + date2.format(dt2));
}
场景2: 数据库 这里以oracle
select to_char(sysdate - 4, 'yyyy-MM-dd') "20201226-YYYY", to_char(sysdate - 4, 'YYYY-MM-dd') "20201226-yyyy",
to_char(sysdate - 3, 'yyyy-MM-dd') "20201227-YYYY", to_char(sysdate - 3, 'YYYY-MM-dd') "20201227-yyyy",
to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "oracle不区分大小写的"
from dual;