最近在项目中遇到一个问题:前端选择时间格式化的样式,后端根据参数,进行格式化,
前端的参数有:YYYY,YYYYMM,YYYYMMDD,YYYYMMDDHHMMSS等,前端全部都是大写字母,后端根据这些参数,进行格式化的话,就会出现错误:比如:
new SimpleDateFormat("YYYYMMDD").format(new Date());
今天是2023-02-09,使用这样的方式给出的结果就是:20230240,原因就是在Java中时间格式化,是有大小写区分的。正确的写法是:
new SimpleDateFormat("YYYYMMdd").format(new Date());
这样写就是正确结果:20230209
Java里面:
HH代表24小时制的;
hh代表12小时制;
MM代表月;
mm代表分;
ss代表秒;
SSS代表毫秒;
E代表星期;
F代表一月中第几个星期几;
w代表一年中第几个星期;
W代表一个月中第几个星期;
a代表上午/下午标记符;
k 时在一天中(1~24);
K时在上午或下午(0~11);
z 时区;
DD代表 day of year 今年的第N天,dd是这个月的多少天;
yyyy代表year,
YYYY代表weak-year,通俗讲就是当周所在的年份,比如2019-12-29,如果这周涉及跨年,那么使用YYYY将得不到想要的结果,无论数据库查询还是web里面格式化时间。
常用格式化格式:yyyy-MM-dd HH:mm:ss如果有毫秒级,yyyy-MM-dd HH:mm:ss.SSS