将Unix时间戳转换为JavaScript中的时间

我将时间存储在MySQL数据库中作为Unix时间戳,并发送给一些JavaScript代码。 我怎样才能得到它的时间?

例如,HH / MM / SS格式。

// Create a new JavaScript Date object based on the timestamp // multiplied by 1000 so that the argument is in milliseconds, not seconds. var date = new Date(unix_timestamp*1000); // Hours part from the timestamp var hours = date.getHours(); // Minutes part from the timestamp var minutes = "0" + date.getMinutes(); // Seconds part from the timestamp var seconds = "0" + date.getSeconds(); // Will display time in 10:30:23 format var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2); 

有关Date对象的更多信息,请参阅MDN或ECMAScript 5规范 。

 function timeConverter(UNIX_timestamp){ var a = new Date(UNIX_timestamp * 1000); var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; var year = a.getFullYear(); var month = months[a.getMonth()]; var date = a.getDate(); var hour = a.getHours(); var min = a.getMinutes(); var sec = a.getSeconds(); var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ; return time; } 

JavaScript以毫秒为单位工作,因此您首先必须将UNIX时间戳从秒转换为毫秒。

 var date = new Date(UNIX_Timestamp * 1000); // Manipulate JavaScript Date object here... 

我偏爱Jacob Wright的Date.format()库,它以PHP的date()函数的风格实现JavaScriptdate格式。

 new Date(unix_timestamp * 1000).format('h:i:s') 

这里是最短的一行解决scheme,格式秒为hh:mm:ss

 /** * Convert seconds to time string (hh:mm:ss). * * @param Number s * * @return String */ function time(s) { return new Date(s * 1e3).toISOString().slice(-13, -5); } console.log( time(12345) ); // "03:25:45" 

方法Date.prototype.toISOString()以简化的扩展ISO 8601格式返回时间,该格式始终为 24或27个字符(即YYYY-MM-DDTHH:mm:ss.sssZ±YYYYYY-MM-DDTHH:mm:ss.sssZ分别)。 时区始终为零UTC偏移量。

注意:这个解决scheme不需要任何第三方库,并且在所有现代浏览器和JavaScript引擎中都支持。

UNIX时间戳是自1970年1月1日UTC(00:00:00)以来秒数(根据维基百科 )。

JavaScript中Date对象的参数是从1970年1月1日UTC(00:00:00)开始的毫秒数(根据W3School的Javascript文档 )。

看下面的代码例如:

  function tm(unix_tm) { var dt = new Date(unix_tm*1000); document.writeln(dt.getHours() + '/' + dt.getMinutes() + '/' + dt.getSeconds() + ' -- ' + dt + '<br>'); } tm(60); tm(86400); 

得到:

 1/1/0 -- Thu Jan 01 1970 01:01:00 GMT+0100 (Central European Standard Time) 1/0/0 -- Fri Jan 02 1970 01:00:00 GMT+0100 (Central European Standard Time) 

我会考虑使用像momentjs.com这样的库,这使得这非常简单:

基于Unix时间戳:

 var timestamp = moment.unix(1293683278); console.log( timestamp.format("HH/mm/ss") ); 

基于MySQLdatestring:

 var now = moment("2010-10-10 12:03:15"); console.log( now.format("HH/mm/ss") ); 

上述解决scheme的问题是,如果小时,分钟或秒,只有一个数字(即0-9),时间会是错误的,例如它可能是2:3:9,但它应该是02: 03:09。

根据这个页面 ,使用Date的“toLocaleTimeString”方法似乎是一个更好的解决scheme。

使用Moment.js ,你可以得到这样的时间和date:

 var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss"); 

而且你可以只使用这个:

 var timeString = moment(1439198499).format("HH:mm:ss"); 

另一种方法 – 从ISO 8601的date。

 var timestamp = 1293683278; var date = new Date(timestamp*1000); var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/) alert(iso[1]); 

在这一刻你必须使用unix时间戳:

 var dateTimeString = moment.unix(1466760005).format("DD-MM-YYYY HH:mm:ss"); 

不需要40 KB库的现代解决scheme:

Intl.DateTimeFormat是格式化date/时间的非文化帝国主义方式。

 // Setup once var options = { //weekday: 'long', //month: 'short', //year: 'numeric', //day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric' }, intlDate = new Intl.DateTimeFormat( undefined, options ); // Reusable formatter var timeStamp = 1412743273; console.log( intlDate.format( new Date( 1000 * timeStamp ) ) ); 
 // Format value as two digits 0 => 00, 1 => 01 function twoDigits(value) { if(value < 10) { return '0' + value; } return value; } var date = new Date(unix_timestamp*1000); // display in format HH:MM:SS var formattedTime = twoDigits(date.getHours()) + ':' + twoDigits(date.getMinutes()) + ':' + twoDigits(date.getSeconds()); 

注意一些答案的零问题。 例如,时间戳1439329773将被错误地转换为12/08/2015 0:49

我会build议使用以下来解决这个问题:

 var timestamp = 1439329773; // replace your timestamp var date = new Date(timestamp * 1000); var formattedDate = ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2); console.log(formattedDate); 

现在的结果是:

 12/08/2015 00:49 

基于@ shomrat的答案,这是一个自动写入date时间的代码片段:

 today, 11:23 

要么

 yersterday, 11:23 

或者(如果与今天不同但是同一年)

 6 Nov, 11:23 

或者(如果比今天多一年)

 6 Nov 2016, 11:23 

 function timeConverter(t) { var a = new Date(t * 1000); var today = new Date(); var yesterday = new Date(Date.now() - 86400000); var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; var year = a.getFullYear(); var month = months[a.getMonth()]; var date = a.getDate(); var hour = a.getHours(); var min = a.getMinutes(); if (a.setHours(0,0,0,0) == today.setHours(0,0,0,0)) return 'today, ' + hour + ':' + min; else if (a.setHours(0,0,0,0) == yesterday.setHours(0,0,0,0)) return 'yesterday, ' + hour + ':' + min; else if (year == today.getFullYear()) return date + ' ' + month + ', ' + hour + ':' + min; else return date + ' ' + month + ' ' + year + ', ' + hour + ':' + min; } 
 function getTIMESTAMP() { var date = new Date(); var year = date.getFullYear(); var month = ("0"+(date.getMonth()+1)).substr(-2); var day = ("0"+date.getDate()).substr(-2); var hour = ("0"+date.getHours()).substr(-2); var minutes = ("0"+date.getMinutes()).substr(-2); var seconds = ("0"+date.getSeconds()).substr(-2); return year+"-"+month+"-"+day+" "+hour+":"+minutes+":"+seconds; } //2016-01-14 02:40:01 

date/时代转换器

你需要ParseInt ,否则将无法正常工作:


 if (!window.a) window.a = new Date(); var mEpoch = parseInt(UNIX_timestamp); if (mEpoch < 10000000000) mEpoch *= 1000; ------ a.setTime(mEpoch); var year = a.getFullYear(); ... return time; 

如果您想将Unix时间持续时间转换为实际的小时数,分钟数和秒数,则可以使用以下代码:

 var hours = Math.floor(timestamp / 60 / 60); var minutes = Math.floor((timestamp - hours * 60 * 60) / 60); var seconds = Math.floor(timestamp - hours * 60 * 60 - minutes * 60 ); var duration = hours + ':' + minutes + ':' + seconds; 
 function timeConverter(UNIX_timestamp){ var a = new Date(UNIX_timestamp*1000); var hour = a.getUTCHours(); var min = a.getUTCMinutes(); var sec = a.getUTCSeconds(); var time = hour+':'+min+':'+sec ; return time; } 

您可以使用以下function将您的时间戳转换为HH:MM:SS格式:

 var convertTime = function(timestamp, separator) { var pad = function(input) {return input < 10 ? "0" + input : input;}; var date = timestamp ? new Date(timestamp * 1000) : new Date(); return [ pad(date.getHours()), pad(date.getMinutes()), pad(date.getSeconds()) ].join(typeof separator !== 'undefined' ? separator : ':' ); } 

不传递分隔符,它使用:作为(默认)分隔符:

 time = convertTime(1061351153); // --> OUTPUT = 05:45:53 

如果要使用/作为分隔符,只需将其作为第二个parameter passing即可:

 time = convertTime(920535115, '/'); // --> OUTPUT = 09/11/55 

演示

 var convertTime = function(timestamp, separator) { var pad = function(input) {return input < 10 ? "0" + input : input;}; var date = timestamp ? new Date(timestamp * 1000) : new Date(); return [ pad(date.getHours()), pad(date.getMinutes()), pad(date.getSeconds()) ].join(typeof separator !== 'undefined' ? separator : ':' ); } document.body.innerHTML = '<pre>' + JSON.stringify({ 920535115 : convertTime(920535115, '/'), 1061351153 : convertTime(1061351153, ':'), 1435651350 : convertTime(1435651350, '-'), 1487938926 : convertTime(1487938926), 1555135551 : convertTime(1555135551, '.') }, null, '\t') + '</pre>'; 
  function getDateTimeFromTimestamp(unixTimeStamp) { var date = new Date(unixTimeStamp); return ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2); } var myTime = getDateTimeFromTimestamp(1435986900000); console.log(myTime); // output 01/05/2000 11:00 
 function getDateTime(unixTimeStamp) { var d = new Date(unixTimeStamp); var h = (d.getHours().toString().length == 1) ? ('0' + d.getHours()) : d.getHours(); var m = (d.getMinutes().toString().length == 1) ? ('0' + d.getMinutes()) : d.getMinutes(); var s = (d.getSeconds().toString().length == 1) ? ('0' + d.getSeconds()) : d.getSeconds(); var time = h + '/' + m + '/' + s; return time; } var myTime = getDateTime(1435986900000); console.log(myTime); // output 01/15/00