Java中YYYY-MM-dd与yyyy-MM-dd的区别及跨年问题

 更新时间:2024年01月02日 11:08:54   作者:小湘西  
YYYY-MM-dd可能会导致跨年周的日期被归属到错误的年份, yyyy-MM-dd总是表示实际的日历年份,无论日期所在的周是否跨年,本文就来介绍一下两者的区别,感兴趣的可以了解一下

大写YYYY的用途

大写的YYYY通常用于表示“周年”,在某些编程语言或者数据格式中,比如ISO 8601日期格式中,YYYY可能代表的是所在周属于的年份。这意味着,如果一周跨越了两个不同的年份,该周会被归属到哪一年取决于这周中的大部分日子属于哪一年。

小写yyyy的用途

小写的yyyy则是更常见的表示方法,用于表示“日历年”。无论日期所在的周是否跨年,yyyy总是代表实际的年份。

实际影响

在大多数情况下,人们使用yyyy-MM-dd格式,因为它符合日常生活中对日期的理解和使用。而在一些需要按周计算时间的场合,可能会用到YYYY格式,尤其是在财务报告或者具有特定周计算需求的行业中。

样例

public class DateFormatExample {
    public static void main(String[] args) {
        // 使用Calendar获取一个日期实例
        Calendar calendar = Calendar.getInstance();
        // 假设日期是2023年12月31日
        calendar.set(2023, Calendar.DECEMBER, 31);

        // 使用YYYY格式化日期
        SimpleDateFormat formatWithYYYY = new SimpleDateFormat("YYYY-MM-dd");
        String dateWithYYYY = formatWithYYYY.format(calendar.getTime());
        System.out.println("Date with YYYY: " + dateWithYYYY); 
        // 输出的是2024-12-31,因为12月31日属于第1周,而该周属于下一年

        // 使用yyyy格式化日期
        SimpleDateFormat formatWithyyyy = new SimpleDateFormat("yyyy-MM-dd");
        String dateWithyyyy = formatWithyyyy.format(calendar.getTime());
        System.out.println("Date with yyyy: " + dateWithyyyy); 
        // 输出2023-12-31
    }
}

结论

  • YYYY-MM-dd可能会导致跨年周的日期被归属到错误的年份。
  • yyyy-MM-dd总是表示实际的日历年份,无论日期所在的周是否跨年。
  • 在编写代码或者设置日期格式时,需要根据实际需求选择合适的年份表示方法。

如果使用日期格式不当,可能会在数据处理、日志记录或者时间计算等方面造成混淆和错误。因此,在处理日期和时间时,了解并正确使用这些日期格式是非常重要的。

补充

常用格式为:yyyy-MM-dd HH:mm:ss

以 2019-12-31 06:07:59:666 时间为例:

字符

含义

Example

y(小写的y)

yyyy---->2019

M(大写的M)

  MM---->12

d(小写的d)

一月中的天数

  dd---->31

H(24 小时制,大写的H)

小时(0-23)

  HH---->18

h(12 小时制,小写的h)

小时(1-12)

  hh---->06

m(小写的m)

  mm---->07

s(小写的s)

  ss---->59

S(大写的S)

毫秒

 SSS---->666

Y(大写的y)

Week Year

YYYY---->2020

D(大写的D)

一年中天数

  DD---->365

yyyy-MM-dd与YYYY-MM-dd区别在哪里?

Y 代表 Week Year,表示当天周所在的年份。这种方式将会把一年划分成52 周/53周(类似于闰年的概念,每隔几年将会增加一周)。Week Year下每周仅属于某一年,如果某年的第一周或最后一周跨年,就会导致部分日期年份与实际不符。

oracle和java的日期格式的差异

java中的的日期格式为:

yyyy-MM-dd HH:mm:ss:代表将时间转换为24小时制,例: 2020-01-07 13:21:55

yyyy-MM-dd hh:mm:ss:代表将时间转换为12小时制,例: 2020-01-07  03:24:21

oracle中的日期格式为(不区分大小写):

yyyy-MM-dd HH24:mi:ss:代表oracle中的24小时制,例:2020/1/7 13:21:55

yyyy-MM-dd HH:mi:ss:  代表oracle中的12小时制,例:2020/1/7 9:21:55

之所以 oracle和java不同,是因为我们知道oracle是不区分大小写的,所以java中根据大小写来代表24小时和12小时的表达式在oracle中就会出问题,oracle中将24小时的时和分做了特殊处理.如上所示,在hh后面加上了24,将mm改为了mi.

到此这篇关于Java中YYYY-MM-dd与yyyy-MM-dd的区别及跨年问题的文章就介绍到这了,更多相关Java YYYY-MM-dd与yyyy-MM-dd内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis generator mapper文件覆盖原文件的示例代码

    Mybatis generator mapper文件覆盖原文件的示例代码

    这篇文章主要介绍了Mybatis generator mapper文件覆盖原文件,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Spring MVC打印@RequestBody、@Response日志的方法

    Spring MVC打印@RequestBody、@Response日志的方法

    这篇文章主要介绍了Spring MVC打印@RequestBody、@Response日志的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • JAVA代码书写规范汇总详解

    JAVA代码书写规范汇总详解

    这篇文章主要介绍了JAVA代码书写规范汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 解决Mybatis的serverTimezone时区出现问题

    解决Mybatis的serverTimezone时区出现问题

    这篇文章主要介绍了解决Mybatis的serverTimezone时区出现问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 如何解决Spring in action @valid验证不生效的问题

    如何解决Spring in action @valid验证不生效的问题

    这篇文章主要介绍了如何解决Spring in action @valid验证不生效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • RESTful API设计原则与实现示例详解

    RESTful API设计原则与实现示例详解

    这篇文章主要为大家介绍了RESTful API设计原则与实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • SpringBoot整合mybatis-generator插件流程详细讲解

    SpringBoot整合mybatis-generator插件流程详细讲解

    这篇文章主要介绍了SpringBoot整合mybatis-generator插件流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • 一文详解Java项目中如何优雅的使用枚举类型

    一文详解Java项目中如何优雅的使用枚举类型

    枚举类型在开发中是很常见的,有非常多的应用场景,这篇文章我们就来学习一下项目中如何优雅的使用枚举类型,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • Java程序测试上传Maven工程代码示例解析

    Java程序测试上传Maven工程代码示例解析

    这篇文章主要介绍了Java程序测试上传Maven工程代码示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 如何利用Ganymed SSH-2模拟SSH操作

    如何利用Ganymed SSH-2模拟SSH操作

    这几天看SFTP资料时,无意中看到了Ganymed SSH-2,写了个简单demo,通过,感觉挺好用的,下面就和大家分享下。需要的朋友可以过来参考参考
    2013-08-08

最新评论