-->

WEB资讯

您的当前位置:首页 > 资讯 > JS

前端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)

相关文章更多 >

© 2024版权所有 水水网

电话:171780793