前言
在处理时间的时候,发现对它用的频率特别高,因此打算开一个文章专门整理js处理时间的代码;
在文章发布后,如遇到没有写进来的将持续进行更新
时间处理
常用方法
date.getFullYear(); // 获取完整的年份(4位,1970)
date.getMonth(); // 获取月份(0-11,0代表1月,用的时候记得加上1)
date.getDate(); // 获取日(1-31)
date.getTime(); // 获取时间(从1970年1月1日开始的毫秒数)
date.getHours(); // 获取小时数(0-23)
date.getMinutes(); // 获取分钟数(0-59)
date.getSeconds(); // 获取秒数(0-59)
封装日期格式
— yyyy-mm-dd hh:mm:ss
传入的参数为日期时间类型
toTimeFormate(date) {
let Y = date.getFullYear();
let M =
date.getMonth() + 1 - 0 >= 10
? Number(date.getMonth()) + 1
: "0" + (Number(date.getMonth()) + 1);
let D = date.getDate();
let h = date.getHours() >= 10 ? date.getHours() : "0" + date.getHours();
let m =
date.getMinutes() >= 10 ? date.getMinutes() : "0" + date.getMinutes();
let s =
date.getSeconds() >= 10 ? date.getSeconds() : "0" + date.getSeconds();
return Y + "-" + M + "-" + D + " " + h + ":" + m + ":" + s;
},
传入参数为时间戳
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
var D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' ';
var h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':';
var m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':';
var s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());
return Y+M+D+h+m+s;
}
—- yyyy-mm-dd
传入的为时间戳
yyyymmmddForTimeStamp(time) {
let date = new Date(time);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? "0" + m : m;
var d = date.getDate();
d = d < 10 ? "0" + d : d;
var h = date.getHours();
h = h < 10 ? "0" + h : h;
var minute = date.getMinutes();
minute = minute < 10 ? "0" + minute : minute;
var second = date.getSeconds();
second = second < 10 ? "0" + second : second;
return y + "-" + m + "-" + d + " " + h + ":" + minute + ":" + second;
},
— hh:mm:ss
传入的参数为时间戳 转时分秒
toHHmmss(data) {
var s;
var hours = parseInt((data % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = parseInt((data % (1000 * 60 * 60)) / (1000 * 60));
var seconds = (data % (1000 * 60)) / 1000;
s =
(hours < 10 ? "0" + hours : hours) +
":" +
(minutes < 10 ? "0" + minutes : minutes) +
":" +
(seconds < 10 ? "0" + seconds : seconds);
if (s.length > 8) {
s = s.slice(0, 8);
}
return s;
},
分钟、时间戳互转
传入的为整数
// 分钟转时间戳
clockToTimeStamp(clock) {
var s = "";
s = Number(clock * 60) * 1000;
return s;
},
传入的为时间戳
// 时间戳转分钟
timeStampToClock(data) {
var s = "";
s = data / 1000 / 60;
return s;
},
传入的参数为 hh:mm:ss格式字符串
// 时分秒转时间戳
toTimeStamp(date) {
var s = "";
var hour = date.split(":")[0];
var min = date.split(":")[1];
var sec = date.split(":")[2];
s = Number(hour * 3600) + Number(min * 60) + Number(sec);
s = s * 1000;
return s;
},
传入的参数为整数
// 秒转分钟
secondToMinute(data) {
let s = "";
s = parseFloat((data / 60).toString()).toFixed(2);
return s;
},
时间格式转换
— 转时间戳
将当前日期转时间戳
var timeStamp = Date.parse(new Date());
var timeStamp = (new Date()).valueOf();
var timeStamp=new Date().getTime();
将指定字符串转时间戳
var exactTime = "2022-07-08 00:00:00";
var exactTimeStamp = new Date(exactTime).getTime();
将当天的某一时间点(特定时间点)转时间戳
// 调用转yyyymmdd的方法
// 指定当天的09:00:00
let timeStr = this.yyyymmmddForTimeStamp(new Date().getTime()).slice(0, 10) + " 09:00:00";
//转时间戳
let timeStamp = new Date(timeStr.replace(/-/g, '/')).getTime();
— 转日期
当前时间戳转日期
// 获取现在的时间戳
var timeStamp=new Date().getTime();
var time = new Date(timeStamp);
字符串转日期
字符串数据应为yyyy-MM-dd hh:mm:ss 格式
如: 2022-09-01 12:00:00
// 字符转日期
getDate(strDate) {
var st = strDate;
var a = st.split(" ");
var b = a[0].split("-");
var c = a[1].split(":");
var date = new Date(b[0], b[1], b[2], c[0], c[1], c[2])
return date;
}
— 转字符串
获取时间
— 获取本周、上周、下周的周一二三等
根据当前时间获取附近的时间点
let now = new Date();
let nowTime = now.getTime();
let day = now.getDay();
let oneDayTime = 24 * 60 * 60 * 1000;
let beforeSundayTime = new Date(nowTime - day * oneDayTime); // 上周末
let MondayTime = new Date(nowTime - (day - 1) * oneDayTime); //本周一
let TuesdayTime = new Date(nowTime - (day - 2) * oneDayTime); // 本周二
let WedDayTime = new Date(nowTime - (day - 3) * oneDayTime); // 本周三
let thurdayTime = new Date(nowTime - (day - 4) * oneDayTime); // 本周四
let fridayTime = new Date(nowTime - (day - 5) * oneDayTime); // 本周五
let SundayTime = new Date(nowTime + (7 - day) * oneDayTime); //本周日
let nextMondayTime = new Date(nowTime + (8 - day) * oneDayTime); // 下周一
let nextTuesDayTime = new Date(nowTime + (9 - day) * oneDayTime); // 下周二
let nextThursDayTime = new Date(nowTime + (11 - day) * oneDayTime); // 下周四
let nextSundayTime = new Date(nowTime + (14 - day) * oneDayTime); // 下周末
— 获取当前时间
let now= new Date();
now.getYear(); //获取当前年份(2位)
now.getFullYear(); //获取完整的年份(4位,1970-???)
now.getMonth(); //获取当前月份(0-11,0代表1月)
now.getDate(); //获取当前日(1-31)
now.getDay(); //获取当前星期X(0-6,0代表星期天)
now.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
now.getHours(); //获取当前小时数(0-23)
now.getMinutes(); //获取当前分钟数(0-59)
now.getSeconds(); //获取当前秒数(0-59)
now.getMilliseconds(); //获取当前毫秒数(0-999)
now.toLocaleDateString(); //获取当前日期
now.toLocaleTimeString(); //获取当前时间
now.toLocaleString( ); //获取日期与时间
— 获取指定日期
设定特定时间
到特定的年份(如2000)
var d = new Date()
d.setYear(2000)
到特定的月份(如4月)
var d = new Date()
d.setMonth(4);
到特定的日期(如15日)
var d = new Date()
d.setDate(15);
到特定的小时(如15时)
var d = new Date()
d.setHours(15);
到特定的分钟(如17分)
var d = new Date()
d.setMinutes(17);
到特定的秒钟(如35秒)
var d = new Date()
d.setSeconds(35);
设定特定时间节点
获取当月第一天
getFirstDayOfMonth () {
var date = new Date();
date.setDate(1);
return date.format('yyyy-MM-dd');
}
获取当月最后一天
getLastDayOfMonth () {
var date = new Date();
var month = date.getMonth();
date.setMonth(month+1);
date.setDate(0);
return date.format('yyyy-MM-dd');
}
获取本季度第一天
getFirstDayOfSeason () {
var date = new Date();
var month = date.getMonth();
if(month <3 ){
date.setMonth(0);
}else if(2 < month && month < 6){
date.setMonth(3);
}else if(5 < month && month < 9){
date.setMonth(6);
}else if(8 < month && month < 11){
date.setMonth(9);
}
date.setDate(1);
return date.format('yyyy-MM-dd');;
}
获取本年的第一天
function getFirstDayOfYear () {
var date = new Date();
date.setDate(1);
date.setMonth(0);
return date.format('yyyy-MM-dd');;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136658.html