将UNIX时间戳转换为日期时间(JavaScript)

22

时间戳:

1395660658

代码:

//timestamp conversion
exports.getCurrentTimeFromStamp = function(timestamp) {
    var d = new Date(timestamp);
    timeStampCon = d.getDate() + '/' + (d.getMonth()) + '/' + d.getFullYear() + " " + d.getHours() + ':' + d.getMinutes();

    return timeStampCon;
};

这将按照时间格式正确地转换时间戳,但日期始终如下:

17/0/1970

为什么-干杯?

4个回答

60

由于JavaScript计算自1970年01/01以来的毫秒数,而不是秒数,因此您需要乘以1000:

var d = new Date(timestamp*1000);

参考文档


7
function convertTimestamp(timestamp) {
    var d = new Date(timestamp * 1000), // Convert the passed timestamp to milliseconds
        yyyy = d.getFullYear(),
        mm = ('0' + (d.getMonth() + 1)).slice(-2),  // Months are zero based. Add leading 0.
        dd = ('0' + d.getDate()).slice(-2),         // Add leading 0.
        hh = d.getHours(),
        h = hh,
        min = ('0' + d.getMinutes()).slice(-2),     // Add leading 0.
        ampm = 'AM',
        time;

    if (hh > 12) {
        h = hh - 12;
        ampm = 'PM';
    } else if (hh === 12) {
        h = 12;
        ampm = 'PM';
    } else if (hh == 0) {
        h = 12;
    }

    // ie: 2014-03-24, 3:00 PM
    time = yyyy + '-' + mm + '-' + dd + ', ' + h + ':' + min + ' ' + ampm;
    return time;
}

您可以通过如下方式调用来获取值:convertTimestamp('1395660658')

4

因为您的时间是以秒为单位。Javascript 要求它以自纪元起的毫秒为单位。将其乘以 1000,应该就是您想要的。

//time in seconds
var timeInSeconds = ~(new Date).getTime();
//invalid time
console.log(new Date(timeInSeconds));
//valid time
console.log(new Date(timeInSeconds*1000));

2
const timeStamp = 1611214867768;

const dateVal = new Date(timeStamp).toLocaleDateString('en-US');
console.log(dateVal)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接