YYYY与yyyy小记

环境:
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;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值