场景
SimpleDateFormat 是 Java 提供的一个格式化和解析日期的工具类。
它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat 使得可以选择任何用户定义的日期 - 时间格式的模式。
在Java中,可以使用SimpleDateFormat的format方法,将一个Date类型转化为String类型,并且可以指定输出格式
Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdf.format(date); System.out.println(dateStr);
在Java中,可以使用 SimpleDateFormat 的 parse 方法,将一个 String 类型转化成 Date 类型。
System.out.println(sdf.parse(dateStr));
那么在格式化模式中表示年为什么只能使用yyyy,而不让用YYYY?
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
在格式表达式中,y表示year,而Y表示Week Year。
什么是Week Year?
不同的国家对于一周的开始和结束的定义是不同的。
如在中国,我们把星期一作为一周的第一天,而在美国,他们把星期日作为一周的第一天。
同样,如何定义哪一周是一年当中的第一周?
因为不同人对于日期和时间的表示方法有不同的理解,于是,大家就共同制定了一个国际规范:ISO 8601
国际标准化组织的国际标准 ISO 8601 是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》。
在 ISO 8601 中。对于一年的第一个日历星期有以下四种等效说法:
1,本年度第一个星期四所在的星期;
2,1 月 4 日所在的星期;
3,本年度第一个至少有 4 天在同一星期内的星期;
4,星期一在去年 12 月 29 日至今年 1 月 4 日以内的星期;
举例:
根 据 ISO 8601 标 准,2019 年 12 月 29 日、2019 年 12 月 30 日、2019 年 12 月 31 日这两天,
其实不属于 2019 年的最后一周,而是属于 2020 年的第一周。
JDK针对ISO8601提供的支持
Java 7 引入了「YYYY」作为一个新的日期模式来作为标识。
使用「YYYY」作为标识,再通过 SimpleDateFormat 就可以得到一个日期所属的周属于哪一年了。
看下面的示例代码
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY"); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy"); System.out.println(sdf3.format(sdf1.parse("2019-12-30")));//2019 System.out.println(sdf2.format(sdf1.parse("2019-12-30")));//2020 System.out.println(sdf2.format(sdf1.parse("2020-01-01")));//2020
后面跟的是输出结果。
标签:12,Java,format,时用,SimpleDateFormat,日期,2019 From: https://www.cnblogs.com/badaoliumangqizhi/p/17458454.html