验证一个日期时间格式化的问题

原创
2020/01/03 16:39
阅读数 149

前几天在一个博文里看到关于日期格式化的问题,所以今天记录一下,问题的描述是这样:在一个前台数据列表中发现显示的日期中的年份变成里2020年,实际日期应该是2019年? 那么下面通过代码模拟还原一下这个问题,

第一步先定义下这个日期:2019-12-31

// 定义一个日期 
Date dateOf20191231 = DateUtils.parseDate("2019-12-31", "yyyy-MM-dd");

第二步,定义个日期时间格式化format

// 这里使用SimpleDateFormat定义个格式化对象 
SimpleDateFormat sdf = new SimpleDateFormat("YYYY/MM/dd");

第三步,格式化输出这个日期到控制台

System.out.println(sdf.format(dateOf20191221str)); 
// 输出结果:2020/12/31

细心的人应该发现了一个问题,两个关于年份的格式不一样,SimpleDateFormat中使用的是大写的,那么问题就出现在这个地方,通过分析发现,这里的YYYY使用的是WEEK_YEAR方式格式化年份,也就是以当天所在的周属于的年份,只要本周跨年,那么这周就算入下一个年份,所以就出现来以上的问题,在此再次整理记录一下这个问题。

附录完整测试代码:

package com.hicrane;

import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class HiCrane {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
        Date dateOf20191221str = DateUtils.parseDate("2019-12-31", "yyyy-MM-dd");
        System.out.println(sdf.format(dateOf20191221str));
    }
}
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部