什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。
目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时间戳最多可以使用到格林威治时间2038年01月19日03时14分07秒(二进制:01111111 11111111 11111111 11111111)。其后一秒,二进制数字会变为10000000 00000000 00000000 00000000,发生溢出错误,造成系统将时间误解为1901年12月13日20时45分52秒。这很可能会引起软件故障,甚至是系统瘫痪。使用64位二进制数字表示时间的系统(最多可以使用到格林威治时间292,277,026,596年12月04日15时30分08秒)则基本不会遇到这类溢出问题。
JS获取当前时间戳的方法 JavaScript 获取当前时间戳: 第一种方法:(这种方法只精确到秒)
1 var timestamp = Date .parse(new Date ());
结果:1597729790000
第二种方法:
1 var timestamp = (new Date ()).valueOf();
结果:1597729790268
第三种方法:
1 var timestamp=new Date ().getTime();
结果:1597729790269
一.js将时间转换成时间戳 1.js获取当前时间戳的方法
1 2 3 var timestamp1 = Date .parse(new Date ());var timestamp2 = (new Date ()).valueOf();var timestamp3 = new Date ().getTime();
第一种:获取的时间戳是把毫秒改成000显示,第二种和第三种是获取了当前毫秒的时间戳。
2.js获取指定时间戳的方法
1 var oldTime = (new Date ("2015/06/23 08:00:20" )).getTime()/1000 ;
getTime()返回数值的单位是毫秒。
演示
二.js把时间戳转为为普通日期格式 1.Date toLocaleString方法
1 2 3 function getLocalTime (nS ) { return new Date (parseInt (nS) * 1000 ).toLocaleString().replace(/:\d{1,2}$/ ,' ' ); }
parseInt() 函数可解析一个字符串,并返回一个整数。
js中时间操作单位是毫秒。
toLocaleString() 方法可根据本地时间把 Date 对象转换为字符串,并返回结果。
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
replace(/:\d{1,2}$/,’ ‘)验证替换以:开始有一位或二位数字的结束字符串,就是秒;替换为空
显示如下:
演示
所以我们可以利用正则表达式改变我们想要的日期格式。
2.Date 属性方法
1 2 3 4 5 6 7 8 9 10 11 12 13 function add0 (m ) {return m<10 ?'0' +m:m }function format (shijianchuo ) { var time = new Date (shijianchuo); var y = time.getFullYear(); var m = time.getMonth()+1 ; var d = time.getDate(); var h = time.getHours(); var mm = time.getMinutes(); var s = time.getSeconds(); return y+'-' +add0(m)+'-' +add0(d)+' ' +add0(h)+':' +add0(mm)+':' +add0(s); }
三.时间戳转化日期格式 在开发中,我们通常请求到时间是以时间戳的形式返回给我们的,那我们怎么将时间戳转换成正常的日期形式呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 const timestamp = '1597727634' console .log(timestamp); const date = new Date (timestamp * 1000 ) const showdate = formatDate(date, 'yyyy-MM-dd' ) console .log(showdate); const showdate1 = formatDate(date, 'yyyy:MM:dd' ) console .log(showdate1); const showdate2 = formatDate(date, 'yyyy:MM:dd hh:mm:ss' ) console .log(showdate2); function formatDate (date, fmt ) { if (/(y+)/ .test(fmt)) { fmt = fmt.replace(RegExp .$1, (date.getFullYear() + '' ).substr(4 - RegExp .$1.length)); } let o = { 'M+' : date.getMonth() + 1 , 'd+' : date.getDate(), 'h+' : date.getHours(), 'm+' : date.getMinutes(), 's+' : date.getSeconds() }; for (let k in o) { if (new RegExp (`(${k} )` ).test(fmt)) { let str = o[k] + '' ; fmt = fmt.replace(RegExp .$1, (RegExp .$1.length === 1 ) ? str : padLeftZero(str)); } } return fmt; }; function padLeftZero (str ) { return ('00' + str).substr(str.length); };
https://www.zhangxinxu.com/php/microCodeDetail?id=10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 var dateFormat = function (timestamp, formats ) { formats = formats || 'Y-m-d' ; var zero = function (value ) { if (value < 10 ) { return '0' + value; } return value; }; var myDate = timestamp? new Date (timestamp): new Date (); var year = myDate.getFullYear(); var month = zero(myDate.getMonth() + 1 ); var day = zero(myDate.getDate()); var hour = zero(myDate.getHours()); var minite = zero(myDate.getMinutes()); var second = zero(myDate.getSeconds()); return formats.replace(/Y|m|d|H|i|s/ig , function (matches ) { return ({ Y : year, m : month, d : day, H : hour, i : minite, s : second })[matches]; }); };
四.指定时间到当前时间的计算 https://www.zhangxinxu.com/php/microCodeDetail?id=11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 var dateDiff = function (timestamp ) { var arrTimestamp = (timestamp + '' ).split('' ); for (var start = 0 ; start < 13 ; start++) { if (!arrTimestamp[start]) { arrTimestamp[start] = '0' ; } } timestamp = arrTimestamp.join('' ) * 1 ; var minute = 1000 * 60 ; var hour = minute * 60 ; var day = hour * 24 ; var halfamonth = day * 15 ; var month = day * 30 ; var now = new Date ().getTime(); var diffValue = now - timestamp; if (diffValue < 0 ) { return '不久前' ; } var monthC = diffValue / month; var weekC = diffValue / (7 * day); var dayC = diffValue / day; var hourC = diffValue / hour; var minC = diffValue / minute; var zero = function (value ) { if (value < 10 ) { return '0' + value; } return value; }; if (monthC > 12 ) { return (function ( ) { var date = new Date (timestamp); return date.getFullYear() + '年' + zero(date.getMonth() + 1 ) + '月' + zero(date.getDate()) + '日' ; })(); } else if (monthC >= 1 ) { return parseInt (monthC) + "月前" ; } else if (weekC >= 1 ) { return parseInt (weekC) + "周前" ; } else if (dayC >= 1 ) { return parseInt (dayC) + "天前" ; } else if (hourC >= 1 ) { return parseInt (hourC) + "小时前" ; } else if (minC >= 1 ) { return parseInt (minC) + "分钟前" ; } return '刚刚' ; };