2016-10-12 72 views
0

我知道這裏有很多問題要求類似,但查看了答案,我似乎得到了意想不到的結果。使用Moment.js格式化日期到以毫秒爲單位的unix時間戳返回格式字符串

我有一個完整的日期,我需要將其轉換爲Unix時間戳在毫秒

的日期是全格式:Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)

如果我嘗試使用了x標識符進行格式化UNIX毫秒(文檔中顯示)我真的只是得到字符串"x"

moment(date).format('x') // = x

我在這裏做錯了什麼?在執行此操作之前,是否需要將date轉換爲除完整格式之外的其他內容?爲什麼將參數傳遞給format()只是將我輸入的格式還給我?

+0

你總是可以做'時刻(日期).toDate()的getTime()' – adeneo

+0

@adeneo感謝!這確實有效,但我仍然想知道我在哪裏出錯了。 – user1486133

+1

您是否使用2.8.4或更高版本,添加了'x'選項,然後 – adeneo

回答

2

在2.8.4版本中增加了x選項,任何早於該版本的版本都會返回字母x,而不是以毫秒爲單位的unix時間。

版本2.8.4

var date = 'Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)'; 
 
var unix = moment(new Date(date)).format('x'); 
 
console.log(unix);
<p>Version 2.8.4 - working !</p> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>

與舊版本

var date = 'Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)'; 
 
var unix = moment(new Date(date)).format('x'); 
 
console.log(unix);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.min.js"></script>

注意那一刻的新版本也德普雷凱茨建設從隨機字符串,所以

moment("Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)") 

會給你一個取消通知,請參閱 - >https://github.com/moment/moment/issues/1407

+0

棄用警告的首選解決方案是提供格式參數,而不是使用「日期」對象構造函數。 –

+0

@MattJohnson - 不,首選的解決方案是傳入一個有效的ISO字符串,但爲了解決這個問題,我使用本地Date構造函數來解析日期,這也不是一個好主意,因爲實現可能會有所不同,Date構造函數的唯一有效格式也應該是ISO字符串或多個參數。 – adeneo

相關問題