簡體   English   中英

使用MomentJS將/ Date(####)/轉換為MM / dd / yyyy本地時遇到問題

[英]Having trouble converting /Date(####)/ to MM/dd/yyyy local with MomentJS

使用外部API向我發送日期,例如:

/Date(1439596800)/

以上日期是:

August 30, 2015

使用像這樣的momentjs:

moment("/Date(1439596800)/").format("MM/DD/YYYY");

得到我這個:

01/17/1970

我知道我應該乘以* 1000,但希望有一個特定的MomentJS方法。

這很簡單。

您的API提供了UNIX時間戳 - 默認情況下, moment(arg)假定自1970年1月1日以來以秒為單位傳遞arg。

要進行轉換,必須先刪除/Date()\\ 我會使用一個刪除所有非數字字符的RegEx:

myString = myString.replace(/\D/g,'');

這只會留下數字。 現在,你可以跑了

moment.unix(myString).format("MM/DD/YYYY");

Moment.js UNIX時間戳的參考

時間戳以秒為單位而不是秒,而moment()只能理解毫秒數。 您可以使用moment.unix()函數

moment.unix("1439596800").format("MM/DD/YYYY"); // returns 08/15/2015

但是你仍然需要從/Date(1439596800)/提取1439596800 ,這可以通過一個簡單的正則表達式來完成

moment.unix(/Date\((\d+)\)/.exec(input)[1]).format("MM/DD/YYYY"); 
// returns 08/15/2015

問題是額外的chacacters。 首先擺脫它們並繁殖。

我正在使用正則表達式來獲取括號內的數字,確保逃避斜線和parens。

var input = "/Date(1439596800)/"
var regex = /\/Date\((\d+)\)\//;
var match = input.match(regex);
if(match){
  var stringUnixTs = match[1];
  var tsMs = Number(stringUnixTs) * 1000;
  var date = new Date(tsMs); // or pass ts directly into moment
} else { }

暫無
暫無

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

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