开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
前言
在前端开发过程中,最常用的时间转换就是时间戳转为标准时间格式了,但是除此之外,标准格式转为时间戳,获取前一天、前一周、前一年的时间等等,这些用得也不少,为了便于在以后的开发中使用,将最常用的一些时间获取与转换的方式总结记录如下。
引用moment插件也可以轻松完成时间的获取与转换功能,我们在开发过程中,哪种用得比较顺手就用哪种,重要的是实现。
1、分别获取当前年月日时分秒
var date = new Date(); // 获取当前时间
var year = date.getFullYear(); // 获取年
var month = date.getMonth() + 1; // 获取月
var day = date.getDate(); // 获取日
var hour = date.getHours(); // 获取时
var minutes = date.getMinutes(); // 获取 分
var seconds = date.getSeconds(); // 获取秒
var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'];
var week = weekArr[date.getDay()]; // 获取星期
2、获取当前日期
思路:这个就直接封装成一个外部方法,我几乎每次开发都会用到,根据1分别获取年月日时分秒星期,然后将这几项拼接成我们所需要的数据格式返回,参数type传1、2、3,。月日时分秒需要加判断,小于10的数字,需要在前面加0,如9月,需要显示为09,其他同理。
- 当type=1的时候,返回的时间格式(年月日时分秒)2022-11-11 22:22:22
- 当type=2的时候,返回的时间格式(年月日)2022-11-11
- 当type=3的时候,返回星期
getFormatDate (type,date) {
var sign2 = ":";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
var weekArr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天'];
var week = weekArr[date.getDay()];
// 给一位数的数据前面加 “0”
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (day >= 0 && day <= 9) {
day = "0" + day;
}
if (hour >= 0 && hour <= 9) {
hour = "0" + hour;
}
if (minutes >= 0 && minutes <= 9) {
minutes = "0" + minutes;
}
if (seconds >= 0 && seconds <= 9) {
seconds = "0" + seconds;
}
if (type==1) {
return year + "-" + month + "-" + day + " " + hour + sign2 + minutes + sign2 + seconds;
} else if (type==2) {
return year + "-" + month + "-" + day;
} else if (type==3) {
return week;
}
}
3、获取一个月前、一年前的日期
思路:利用new Date()方法转,然后根据自己需要的格式进行优化,gerFormateDate方法为上面2中的方法。想获取一个月前的时间,num表示num个月前,一个月前num=2,一年前num=13。
代码如下:
const getFDate = (num) => {
const date = getFormatDate(2,new Date()).split('-')
let yy0=parseInt(date[0]);
let mm0=parseInt(date[1]);
let dd0=parseInt(date[2]);
let pdStr = getFormatDate(2,new Date(yy0,mm0-num,dd0));
return pdStr; // 可针对需要的格式进行优化。
}
4、moment插件使用
moment.js是JavaScript日期处理类库,也就是用于日期格式转换的,官网中有详细的使用说明。
官网地址:momentjs.cn/
angular集成moment.js:
- 使用npm安装moment.js
npm install --save moment
- 使用moment.js的ts文件中导入
import * as moment from 'moment';
- 环境语言导入
使用moment.locale,首先需要导入目标语言
import * as moment from 'moment';
import 'moment/locale/pt-br';
console.log(moment.locale()); // en
moment.locale('pt-BR');
console.log(moment.locale()); // pt-BR
- 使用moment.js
date = moment(theDate).format('MM/DD/YYYY HH:mm');
或者
import * as moment from 'moment';
theDate = moment();
date = theDate.format('YYYY.M.D')
vue集成moment.js:
- 引入库
npm install moment --save
- 在main.js中全局引入
import moment from "moment"
Vue.prototype.$moment = moment;
- 在需要使用日期的地方使用
/* html中 */
<el-date-picker
v-model="timeRange"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
/* js中 */
data() {
return {
timeRange:[],
}
},
mounted(){
let start = this.$moment()
.subtract('1', 'd')
.format('YYYY-MM-DD HH:mm:ss') //当前时间往前推1天(24小时):2021-05-10 18:42:53
let end = this.$moment().format('YYYY-MM-DD HH:mm:ss') //当前时间:2021-05-11 18:42:53
this.timeRange=[start,end]
}