在 前端 获得 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);
结果为: