在 前端 获得 Date 类型数据的途径主要由两种方式:
- 在前端界面通过一些组件或者标签获取用户选择的 时间;
- 在 js 通过 new Date 的方式,创建获取当前时间的变量;
- 在调用接口是,后端返回的数据中,字段的值为 Date(******+***) 的字符串;
一、通过前端界面获取的 时间:
此处通过 element -UI 中的日期时间选择器 组件进行测试;
1、新建一个 vue 文件,把日期时间选择器 组件放入到代码中:
<template>
<div>
<div class="block">
<span class="demonstration">默认</span>
<el-date-picker
v-model="datas"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
<el-button @click="printTime()">打印</el-button>
</div>
</div>
</template>
2、在data() 方法中,初始化一个与组件中双向绑定的变量 datas:
data() {
return {
datas: '',
};
},
3、添加一个按钮,用于在控制台打印出 变量datas的值:
<template>
<div>
<div class="block">
<span class="demonstration">默认</span>
<el-date-picker
v-model="datas"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
<el-button @click="printTime()">打印</el-button>
</div>
</div>
</template>
同时在 methods 中添加打印按钮点击的事件:
methods: {
printTime() {
console.info(this.datas);
console.info(typeof(this.datas));
console.info(this.datas.getFullYear());
console.info(this.datas.getMonth() + 1);
console.info(this.datas.getDate());
console.info(this.datas.getHours());
console.info(this.datas.getMinutes());
console.info(this.datas.getSeconds());
},
}
测试结果为:

二、 通过在 js 新建 Date 类型的方式:
// 新建一个 Date 对象类型的变量
let date = new Date();
console.info(date);
function formatDate(date) {
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
console.info(year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
}
formatDate(date);
结果为:

三、通过在 后端返回数据 的方式:
此处通过 声明 Date(******+***) 的变量方式来模拟后端返回带有此类值的情况:
*此处不考虑\有多少,只是在字符串中的转义方式;
// 模拟后端传递 '\\/Date(******+***)\\/' 字符串的Date类型数据
let data = '\\\\/Date(1633277719000+0800)\\\\/'
// 声明处理该类型数据的统一方法
function formatStringDate(date) {
let tmp = /\d+(?=\+)/.exec(date.substr(1, date.length - 1));
let data = new Date(+tmp);
let year = data.getFullYear();
let month = data.getMonth() + 1;
let day = data.getDate();
let hour = data.getHours();
let minute = data.getMinutes();
let second = data.getSeconds();
console.info(year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
}
// 调用该方法进行转换
formatStringDate(data);
结果为:

