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

我将时间作为 Unix 时间戳存储在 MySQL 数据库中,并将其发送到一些 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 对象的更多信息,请参考MDNECMAScript 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;
}
console.log(timeConverter(0));

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

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

我偏爱 Jacob Wright 的Date.format()库,该库以 PHP 的date()函数样式实现 JavaScript 日期格式。

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

这是将秒格式为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 偏移。

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

采用:

var s = new Date(1504095567183).toLocaleDateString("en-US")
// expected output "8/30/2017"

时间:

var s = new Date(1504095567183).toLocaleTimeString("en-US") 
// expected output "3:19:27 PM"`

参见Date.prototype.toLocaleDateString()

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

基于 Unix 时间戳:

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

基于 MySQL 日期字符串:

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

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

Javascript 中的 Date 对象的参数是自 1970 年 1 月 1 日 UTC 00:00:00 以来的毫秒数(根据W3Schools 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)

将秒格式为 hh:mm:ss:变体的最短的一线解决方案:

console.log(new Date(1549312452 * 1000).toISOString().slice(0, 19).replace('T', ' '));
// "2019-02-04 20:34:12"

使用Moment.js ,您可以像这样获得时间和日期:

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

而且您只能使用以下时间:

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