携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
这里除了是解决element ui和element-plus的保存天数bug外,顺便扩展一下对时间的格式化方法。
方法一 组件自带的格式化属性
<!-- vue2.0 -->
<el-date-picker
style="width: 100%"
v-model="date"
placeholder="请选择日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
<!-- vue3.0 -->
<el-date-picker
style="width: 100%"
v-model="date"
placeholder="请选择日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
>
</el-date-picker>
其中format属性是显示在输入框中的格式;
value-format是绑定值的格式化;
字符之间的特殊字符就是格式化后的显示样式,比如以2000年1月1号为例:
YYYY-MM-DD格式化后会是2000-01-01这种样子的;
YYYY/MM/DD格式化后会是2000/01/01这种样子的;
YYYY是年份;MM是月份;DD是日期; 此外也有时分秒相关的字符,这个建议直接去看文档(element.eleme.cn/#/zh-CN/com…
其中element-plus的format是必须大写的(YYYY-MM-DD),不然可能会失效;
element ui则是大小写混用(yyyy-MM-dd)
如果是要格式化为时间戳:
element-plus:value-format="x"
element ui:value-format="timestamp"
方法二 格式化日期
表单保存时间相关的数据时,有时候会需要前端格式化;前端提交前使用下列格式化工具也能避免提交少一天的bug。
1、js slice方法(不建议使用)
至于为什么不建议还写上来,纯粹是我这真有个同事是这样写的,而且暂时还没出毛病,但不建议使用。
date = (date + "")?.slice(0, 4) + '年' + (date + "")?.slice(5, 7) + '月' + (date + "")?.slice(8, 10) + '日'
打印出来就是xxxx年xx月xx日,或者打印出来有些错乱...
2、使用js自带的格式化日期方法
function getTime() {
var a = new Date()
var b = a.toLocaleTimeString();//输出时 分 秒
var c = a.toLocaleDateString();//输出年 月 日
var d = c.split("/");
if (d[1] < 10) {
d[1] = '0' + d[1]
}
console.log('当前时间:', a);
console.log('输出时分秒:', b);
console.log('输出年月日:', c);
console.log('转化格式:', d.join('-'));
}
打印效果:
缺点是不好加上中文,对于/或者-还可以。
3、使用依赖dayjs(推荐)
安装依赖:
npm install dayjs --save
封装为js方法
import dayjs from 'dayjs';
/**
* @param date - 时间
* @param type - 格式化类型('YYYY-MM-DD'、'YYYY年MM月DD日')
*/
export function formatDate(date, type) {
var time = date;
type = type || 'YYYY-MM-DD';
time = dayjs(date).format(type);
if (date == null || date == '' || date == undefined) {
return '';
} else {
return time;
}
}
组件使用:
import { formatDate } from "@/components/formatDate.js";
formatDate('日期','方法')
此格式化工具默认格式化为YYYY-MM-DD,可自定义。