日期格式化你遇到过这样的坑吗

2022年元旦的第一天,业务群里炸开了锅,昨天导入正式库的数据,昨天导入完查询正常,今天却查不到了,这是怎么回事呢,产品,测试,开发都在群里咋呼起来,经过排查,原来是代码逻辑的问题,业务关联了年度,只能查询当年的业务,虽然是个小插曲,却让我想起了一个很容易被人遗忘的问题,就是时间格式化,YYYY-MM-dd与yyyy-MM-dd的区别。
这两个有什么区别呢,先让我们用代码运行一下看看吧

public class Test{
    public static void main(String[] args){
        Calendar calendar = Calendar.getInstance();
        calendar.set(2021, Calendar.DECEMBER, 31);
        Date date =  calendar.getTime();
        SimpleDateFormat sf1 = new SimpleDateFormat("YYYY-MM-dd");
        System.out.println("大写 YYYY: " + sf1.format(date));
        SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("小写 yyyy: " + sf2.format(date));
    }
}

运行结果:

大写 YYYY: 2022-12-31
小写 yyyy: 2021-12-31

是不是很奇怪,怎么同一个日期,两种格式化方式 结果却不同呢?看一下SimpleDateFormat中的解释
在这里插入图片描述

Y表示的是本周所属的年份,Java语言中一周从周日开始,周六结束,假如本周跨年,那么这一周获取的年份都是第二年,例如周六是2022年,周五获取的YYYY就是2022,虽然很少用YYYY对日期格式化,但是一旦遇到了也确实是一件挺尬的事情

在Vue框架的Element UI组件`el-form`中集成`el-date-picker`日期时间选择器时,可能会遇到一些校验方面的常见问题或“”。主要有以下几点: 1. **非必填验证**:默认情况下,`el-date-picker`不会影响`el-form`的全局验证规则。如果依赖`v-model`直接校验日期是否为空,需要额外处理。可以设置一个计算属性或者在watch里监听日期变化,并手动触发校验。 ```html <template> <el-form :rules="{ required: true }" ref="form"> <!-- ... --> <el-date-picker v-model="datetime" placeholder="选择日期时间"></el-date-picker> <!-- ... --> </el-form> </template> <script> export default { data() { return { datetime: '', form: {}, }; }, watch: { datetime(newVal) { if (!newVal) { this.$refs.form.validateField('datetime'); // 触发校验 } }, }, }; </script> ``` 2. **格式化问题**:如果需要自定义日期格式,校验时需要考虑日期字符串转换回原格式后的有效性。例如,如果用户输入的是"2023-02-28 12:00:00",但在表单中定义的格式是"yyyy-MM-dd",则会因为格式不符而失败。 3. **跨区域日期**:国际化的日期格式可能导致校验错误,确保前端和后端使用的日期格式一致,或者提供兼容不同地区的日期解析方式。 4. **时间范围限制**:如果你希望日期时间选择器只能选择某个特定的时间段,比如只允许今天到明天,需要在数据模型层面做额外判断。 5. **事件触发问题**:`el-date-picker`有`clear`、`change`等事件,注意在这些事件中更新数据并同步校验状态,防止误操作导致校验异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值