目录
一、问题
二、解决方法
三、总结
一、问题
1.使用moment函数转换当前日期的格式为 '年-月-日',结果转换出来竟然有一些 字母!!!
迷之自信,这不就是这样吗?给了转换格式,给了转换时间,字母就出现这种奇葩的情况
1)代码如下
let dateFormate= 'yyyy-MM-dd';
const showDate=this.moment(new Date()).format(dateFormate);
console.log("showDate",showDate)
2)结果如图1-1所示。竟然输出了 2022-09-Sa
二、解决方法
1.仔细看了moment函数的使用方法format() | Moment.js 文档,才发现我把 转换格式的参数写错了。上面'yyyy-MM-dd'里面的‘dd'应该改成大写的'DD'
这个主要是因为 element-ui的时间组件里面 天 格式化时都用的是 小写 'dd' ⊙﹏⊙,然后我就这样写了。
moment.js中 'dd'表示取星期,图1-1 中的 'Sa'是 'saturday'星期六的缩写
1)代码如下
let dateFormate=this.dateFormate : 'yyyy-MM-DD';
const showDate=this.moment(new Date()).format(dateFormate);
console.log("showDate",showDate)
2)结果如图2-1所示,正确了
2.测试了一下其他 转换参数 大小写写错后,也会有格式各样的奇葩错误,月写错了月大于>12,实际上去了分钟,小时小写时转成了12小时制的小时表示。
1)代码如下
let dateFormate= 'yyyy-MM-DD';
const showDate=this.moment(new Date()).format(dateFormate);
console.log("showDate",showDate)
let dateFormate1= 'yyyy-mm-DD';//错误
const showDate1=this.moment(new Date()).format(dateFormate1);
console.log("showDate1",showDate1)
let dateFormate2= 'HH';
const showDate2=this.moment(new Date()).format(dateFormate2);
console.log("showDate2",showDate2)
let dateFormate3='hh';//错误
const showDate3=this.moment(new Date()).format(dateFormate3);
console.log("showDate3",showDate3)
2)结果如图2-3所示
三、总结
1.moment.js格式化出现莫名其妙的结果可能是因为 格式化字符串中的 大小写 写错了。moment.js格式化正确方式 可以参考官方文档 format() | Moment.js 文档
2.还有不同的库,使用的时间格式可能是不一样的。如:element-ui使用 小写的 dd 来表示 天,而moment.js使用大写的 DD来表示天,小写的 dd表示取日期对应的星期的 缩写。
3.所以,使用格式化函数时如果发现转换后的值 奇奇怪怪的,一定要 去找到库对应的文档,仔细对应检查是否有有大小写或其他格式化字符与文档描述不一致的情况。
/*
希望对你有帮助!
如有错误,欢迎指正!非常感谢!
感谢oxl提前采坑 0--0
*/