簡體   English   中英

如何將 unix 時間戳轉換為日歷日期 moment.js

[英]How to convert unix timestamp to calendar date moment.js

我有一個 unix 時間戳,我正在嘗試將其轉換為日歷日期,例如MM/DD/YYYY 到目前為止,我有這個:

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

當我嘗試打印出日歷日期時,window 顯示“無效日期”。 誰能幫我嗎?

按照您的要求使用 moment.js,有一種以秒為單位接受 unix 時間戳的unix方法:

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

UNIX 時間戳是從 1970 年開始的秒數,因此您需要將其轉換為 JS 日期對象:

var date = new Date(unixTimestamp*1000);

Moment.js提供了可以使用的本地化格式

下面是一個例子:

const moment = require('moment');

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

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

可能有點晚了,但對於像這樣的新問題,我使用以下代碼:

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

您可以更改格式以滿足您的需要,還可以像這樣添加時區:

moment(timestamp, 'X').tz(timezone).format('lll');
new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()

只有它,

moment.unix(date).toDate();
moment(1454521239279).toDate()
moment(1454521239279).format()

我像這個例子一樣修復了它。

$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />
$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment(value, 'MM/DD/YYYY', false).calendar(); 
    alert(dateString);
});

嚴格模式寬容模式

雖然嚴格模式在大多數情況下效果更好,但當傳遞給 moment 的字符串格式可能有所不同時,寬恕模式可能非常有用。

在以后的版本中,解析器將默認使用嚴格模式。 嚴格模式要求輸入到時刻完全匹配指定的格式,包括分隔符。 通過將 true 作為第三個參數傳遞給 moment 函數來設置嚴格模式。

在第三方 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);
});

此函數從時間戳創建日期:

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

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

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

首先你可以用js將時間戳轉換為日期object

const date = new Date(時間戳)

然后你可以使用 momentjs 按照你想要的方式格式化它

const formatDate = moment(date).format("日/月/年")

我有一個像1668919452這樣的時間戳。

這樣做讓我得到了正確的結果: {moment.unix(created).format("l")}

我添加了.unix方法。

在此之前,時間戳記為 1970 年代

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM