如何将unix时间戳转换为日历日期moment.js

时间:2014-01-06 04:38:19

标签: javascript datetime momentjs

我有一个unix时间戳,我正在尝试将其转换为日历日期,例如MM / DD / YYYY。到目前为止,我有这个:

$(document).ready(function() {
      var value = $("#unixtime").val(); //this retrieves the unix timestamp
      var dateString = moment(value).calendar(); 
      alert(dateString);
});

当我尝试打印日历日期时,窗口显示“无效日期”。谁能帮我吗?

11 个答案:

答案 0 :(得分:284)

按照你的要求使用moment.js:

var dateString = moment.unix(value).format("MM/DD/YYYY");

答案 1 :(得分:34)

UNIX时间戳它是从1970年开始的秒数,因此您需要将其转换为JS Date对象:

var date = new Date(unixTimestamp*1000);

答案 2 :(得分:13)

Moment.js提供可以使用的Localized formats

以下是一个例子:

const moment = require('moment');

const timestamp = 1519482900000;
const formatted = moment(timestamp).format('L');

console.log(formatted); // "02/24/2018"

答案 3 :(得分:4)

new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()

答案 4 :(得分:3)

moment(1454521239279).toDate()
moment(1454521239279).format()

答案 5 :(得分:1)

moment(timestamp).format('''any format''')

答案 6 :(得分:0)

我像这个例子一样修复了它。

$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />

答案 7 :(得分:0)

可能会晚一点,但是对于这样的新问题,我使用以下代码:

@JsonDeserialize(using=XMLGregorianCalendarDeserializer.class)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar date;

您可以更改格式以满足您的需求,还可以添加时区,如下所示:

moment(timestamp, 'X').format('lll');

答案 8 :(得分:0)

$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment(value, 'MM/DD/YYYY', false).calendar(); 
    alert(dateString);
});

有一个strict mode和一个Forgiving mode

尽管严格模式在大多数情况下效果更好,但是当传递给当下的字符串格式可能有所不同时,宽容模式会非常有用。

在更高版本中,解析器将默认使用严格模式。 严格模式要求输入的时刻与指定格式(包括分隔符)完全匹配。通过将true作为第三个参数传递给矩函数来设置严格模式。

宽容模式有用的常见情况是第三方API提供日期,并且该API的日期格式可能会更改。 假设API首先以“ YYYY-MM-DD”格式发送日期,然后又更改为“ MM / DD / YYYY”格式。

在严格模式下,以下代码导致显示“无效日期”:

moment('01/12/2016', 'YYYY-MM-DD', true).format()
"Invalid date"

在使用格式字符串的宽恕模式下,您输入了错误的日期:

moment('01/12/2016', 'YYYY-MM-DD').format()
"2001-12-20T00:00:00-06:00"

另一种方式是

$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment.unix(value).calendar(); 
    alert(dateString);
});

答案 9 :(得分:0)

只有它

moment.unix(date).toDate();

答案 10 :(得分:0)

此函数从时间戳创建日期:

    function formatDateTime(dateString) {
        const parsed = moment(new Date(dateString))

        if (!parsed.isValid()) {
            return dateString
        }

        return parsed.format('MMM D, YYYY, HH:mmA')
    }