java 中日期格式化的 YYYY 和 yyyy 易错记录

情况

  Date date=new Date("12/31/2021");
  SimpleDateFormat s=new SimpleDateFormat("YYYY-MM-dd");
  System.out.println(s.format(date));

"YYYY-MM-dd"这段格式化代码输出结果是

2022-12-31

SimpleDateFormat 的格式换成 "yyyy-MM-dd"则输出正确

2021-12-31

原因

StackOverflow 一个帖子说的很直白

@“YYYY” is week-based calendar year.
@“yyyy” is ordinary calendar year.

YYYY 是基于周的日历,也就是说如果当前周跨年,YYYY会把年份设为跨年后的年份,呈现的效果就是 年份+1
上面的例子中 2021年12月31号是周五,31号所在的这一周跨年了,所以最后输出是 2022,
如果是 2017年12月31号(这一天是周日) 用YYYY格式化 ,输出则是正常的 2017-12-31

yyyy就是我们平常理解的日历,所以平时对年的格式无脑用yyyy就行了

至于为什么YYYY是基于周,得去看 ISO 8601 这个标准了~

### 回答1: 在 Java ,你可以使用 SimpleDateFormat 类来格式化日期。以 "yyyy-MM-dd" 为例,你可以这样写: ``` SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = dateFormat.format(new Date()); System.out.println("Formatted date: " + formattedDate); ``` 上面的代码创建了一个 SimpleDateFormat 对象,并将 "yyyy-MM-dd" 作为模式(pattern)传入。接着,使用 format() 方法格式化当前日期,最后将格式化后的日期打印出来。 ### 回答2: java日期格式化可以通过SimpleDateFormat类来实现,具体的格式化字符串为"yyyy-MM-dd",其: - yyyy表示年份,四位数表示,例如2020; - MM表示月份,两位数表示,例如01表示一月; - dd表示日期,两位数表示,例如01表示第一天。 下面是一个简单的示例代码: ``` import java.text.SimpleDateFormat; import java.util.Date; public class DateFormatExample { public static void main(String[] args) { // 获取当前日期 Date date = new Date(); // 创建日期格式化对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期 String formattedDate = sdf.format(date); // 输出格式化后的日期 System.out.println("当前日期:" + formattedDate); } } ``` 以上代码会输出当前日期的格式化结果,例如:"当前日期:2020-01-01"。这样就实现了将日期按照指定格式进行格式化的操作。 ### 回答3: Java日期格式化可以使用SimpleDateFormat类来实现。具体的格式化模式可以使用"yyyy-MM-dd"来表示年份-月份-日期的格式。下面是一个示例代码: ```java import java.text.SimpleDateFormat; import java.util.Date; public class DateFormatExample { public static void main(String[] args) { // 获取当前日期 Date currentDate = new Date(); // 创建SimpleDateFormat对象,指定日期格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 使用SimpleDateFormat对象格式化日期 String formattedDate = dateFormat.format(currentDate); // 输出格式化后的日期 System.out.println("当前日期的格式化结果为:" + formattedDate); } } ``` 以上代码会输出当前日期的格式化结果,例如2022-01-01。 通过使用SimpleDateFormat类,我们可以根据自己的需求来格式化日期,使用不同的格式模式来获得所需的日期格式。在这个例子,我们使用"yyyy-MM-dd"格式来表示年份-月份-日期的形式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值