前端js时间和时间戳转换
2020-11-23 17:49:23 来源:admin 点击:875
//调用 date1-date2 计算两个时间差
var mytime = dateDiff('2011-12-29 10:20:56', '2011-12-30 14:13:25');
console.log(mytime)//1天3小时52分钟29秒
//格式化秒数为时分秒
var seconds = formatSeconds('182');
console.log(seconds)//3分钟2秒
//格式化分钟为时分
var minutes = formatMinutes('18222');
console.log(minutes)//12天15小时42分钟
//格式化一个本地时间戳到时间格式
var datas = unix_to_data('y-m-d H:i:s');
console.log(datas)//2020-11-25 09:21:31
var datas1 = unix_to_data('y-m-d H:i:s',1577815321);
console.log(datas1)//2020-01-01 02:02:01
//格式化一个本地时间戳到时间格式
var datas2 = unix_to_data('1577815321');
console.log(datas2)//2020/1/1 上午2:02:01
//格式化一个本地时间到时间戳格式
var datas3 = data_to_unix('2020-01-01');
console.log(datas3)//1580493721000
//调用 date1+date2 计算两个时间和
var mytime2 = dateAdd('2011-12-29 10:20:56', '00:13:25');
console.log(mytime2)//1天3小时52分钟29秒
/**
* 时间相减
* @param {type} date1 Y-m-d H:i:s格式的时间
* @param {type} date2 Y-m-d H:i:s格式的时间
* @returns 反回两个时间相差的秒数
*/
function dateDiff(date1, date2) {
var getTime1 = stringToTime(date1, 'getTime');
var getTime2 = stringToTime(date2, 'getTime');
var lstSec = Math.abs(getTime1 - getTime2) / 1000;
var showtime = formatSeconds(lstSec);
return showtime;//结果是秒
}
//格式化秒数为时分秒
function formatSeconds(seconds) {
if (seconds > 0) {
var minutes = Math.floor(seconds / 60);
seconds = seconds - minutes * 60;
return formatMinutes(minutes) + (seconds > 0 ? seconds + "秒" : "");
}
return seconds;
}
//格式化分钟为时分
function formatMinutes(minutes) {
var day = parseInt(Math.floor(minutes / 1440));
var hour = day > 0 ? Math.floor((minutes - day * 1440) / 60) : Math.floor(minutes / 60);
var minute = hour > 0 ? Math.floor(minutes - day * 1440 - hour * 60) : minutes;
var time = "";
if (day > 0)
time += day + "天";
if (hour > 0)
time += hour + "小时";
if (minute > 0)
time += minute + "分钟";
return time;
}
/**
* 格式化一个本地时间/日期(访php date函数)
* @param format 时间格式
* @param timestamp 秒时间戳
* return 格式化后的时间
*/
/**
* 格式化一个本地时间/日期(访php date函数)
* @param format 时间格式
* @param timestamp 毫秒时间戳
* return 格式化后的时间
*/
function unix_to_data(format, timestamp) {
/*var unixTimestamp = new Date(timestamp * 1000)
commonTime = unixTimestamp.toLocaleString()
return commonTime;*/
format = (format) ? format : 'y-m-d H:i:s';
if (timestamp) {
var date = new Date(timestamp * 1000);
} else {
var date = new Date();
}
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
var h = date.getHours();
var i = date.getMinutes();
var s = date.getSeconds();
var w = date.getDay();
m = m < 10 ? '0' + m : m;
d = d < 10 ? '0' + d : d;
h = h < 10 ? '0' + h : h;
i = i < 10 ? '0' + i : i;
s = s < 10 ? '0' + s : s;
format = format.replace(/y/i, y);//年
format = format.replace(/m/i, m);//月
format = format.replace(/d/i, d);//天
format = format.replace(/h/i, h);//时
format = format.replace(/i/i, i);//分
format = format.replace(/s/i, s);//秒
format = format.replace(/w/i, w);//星期几
return format;
}
/**
* 传入参数标准时间格式反回毫秒时间戳 参数为空直接反回当前毫秒时间戳
* @param {type} datetime 如:
* 2015-08-06 15:16:17
* 2015-08-06 15:16:17.456
* @returns 毫秒时间戳
*/
function data_to_unix(datetime) {
return Math.round(new Date(datetime).getTime()/1000)
/*if (!datetime) {
return new Date().getTime();
}
var time_arr = [];
time_arr = datetime.match(/^(\d+).(\d+).(\d+).(\d+).(\d+).(\d+)$/);
if (time_arr) {
time_arr[7] = 0;
} else {
time_arr = datetime.match(/^(\d+).(\d+).(\d+).(\d+).(\d+).(\d+)\.(\d+)$/);
}
return new Date(time_arr[1], time_arr[2], time_arr[3], time_arr[4], time_arr[5], time_arr[6], time_arr[7]).getTime();*/
}
/**
*时间相加
* @param {type} date1 Y-m-d H:i:s格式的时间
* @param {type} date2 H:i:s格式的时间
* @returns 反回两个时间和 Y-m-d H:i:s格式的时间
* 用在开始时间加时长等于结束时间
*/
function dateAdd(date1, date2) {
var getTime1 = stringToTime(date1, 'getTime');
var getTime2 = new Date("2020-02-20 " + date2).getTime() - new Date("2020-02-20 00:00:00").getTime();
var lastTime = (getTime1+getTime2);
return unix_to_data('',lastTime/1000)
}
/**
* 将标准时间格式(Y-m-d H:i:s)进行转换
* 将标准时间转换为毫秒时间戳
* @param string 时间(Y-m-d H:i:s)
* @param timeType
* timeType = getTime 反回string时间的毫秒时间戳
* timeType = getFullYear 反回string时间的年数字段
* timeType = getMonth 反回string时间的月数字段
* timeType = getDate 反回string时间的天数字段
* timeType = getHours 反回string时间的的小时字段
* timeType = getMinutes 反回string时间的的分钟字段
* timeType = getSeconds 反回string时间的秒字段
* @returns {Number|Date|stringToTime.mydate}
*/
function stringToTime(string, timeType) {
var f = string.split(' ', 2);
var d = (f[0] ? f[0] : '').split('-', 3);
var t = (f[1] ? f[1] : '').split(':', 3);
var mydate = (new Date(
parseInt(d[0], 10) || null,
(parseInt(d[1], 10) || 1) - 1,
parseInt(d[2], 10) || null,
parseInt(t[0], 10) || null,
parseInt(t[1], 10) || null,
parseInt(t[2], 10) || null
));
if (timeType == "getTime") {
return mydate.getTime();
} else if (timeType == "getFullYear") {
return mydate.getFullYear();
} else if (timeType == "getMonth") {
return mydate.getMonth();
} else if (timeType == "getDate") {
return mydate.getDate();
} else if (timeType == "getHours") {
return mydate.getHours();
} else if (timeType == "getMinutes") {
return mydate.getMinutes();
} else if (timeType == "getSeconds") {
return mydate.getSeconds();
} else {
return mydate;
}
}
/**
* 时间相减 反回 时:分:秒 格式
* @param data1 时间 y-m-d H;i:s格式
* @param data2 时间 y-m-d H;i:s格式
* @returns 时:分:秒
*/
function dateDiffHIS(date1, date2) {
//获取两个时间的毫秒时间戳
var time1 = stringToTime(date1, 'getTime');
var time2 = stringToTime(date2, 'getTime');
//两个时间相差的秒数
var s = Math.abs(time1 - time2) / 1000;
return HIS(s);
}
/**
* 将时间秒数转为 时:分:秒格式
* @param s 时长秒数
* @returns 时:分:秒
*/
function HIS(s) {
var ss = s % 60;
var ii = Math.floor(s / 60 % 60);
var hh = Math.floor(s / 3600);
var ss = str_repeat('0', (2 - String(ss).length)) + String(ss);
var ii = str_repeat('0', (2 - String(ii).length)) + String(ii);
var hh = str_repeat('0', (2 - String(hh).length)) + String(hh);
return hh + ':' + ii + ':' + ss;
}
/**
* 重复一个字符串
* @param {type} str 要重复的字符串
* @param {type} n 重复次数
* @returns {String}
*/
function str_repeat(str, n) {
var ren = '';
for (var i = 0; i < n; i++) {
ren += str;
}
return ren;
}
/**
*获取当前月份有几天 年月
*/
function getMonthDay(y,m){
var m_day = [31,28,31,30,31,30,31,31,30,31,30,31];
if(y%4==0 && y%400!=0){
m_day[1] = 29;
}
return m_day[m-1];
}
/**
*时间相加 y-m-d H:i:s 年 月 日 时 分 秒
*反回 年月日时分秒 数组
*/
function timeAdd(dv,add_y,add_m,add_d,add_h,add_i,add_s){
var dv2 = dv.split(/[-\s:]/);
dv2[0]=parseInt(dv2[0])+add_y;
dv2[1]=parseInt(dv2[1])+add_m;
dv2[2]=parseInt(dv2[2])+add_d;
dv2[3]=parseInt(dv2[3])+add_h;
dv2[4]=parseInt(dv2[4])+add_i;
dv2[5]=parseInt(dv2[5])+add_s;
var date=new Date(dv2[0],dv2[1]-1,dv2[2],dv2[3],dv2[4],dv2[5]);
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
var h = date.getHours();
var i = date.getMinutes();
var s = date.getSeconds();
return [y,m,d,h,i,s];
}
var date = timeAdd('2014-05-29 18:09:00',0,0,0,20,0,0);
var prentdate = date[0]+'-'+date[1]+'-'+date[2]+' '+date[3]+':'+date[4]+':'+date[5];
console.log(prentdate)