2016-07-07 4828 views
3

從我以前的帖子後續:Javascript Safari: new Date() with strings returns invalid date when typed 我使用Moment.js根據用戶在文本框中的輸入將日期字符串轉換爲日期字段。這是爲了防止我在鏈接的帖子中描述的Safari和Firefox無法渲染日期的問題,當Chrome很好時。 下面是代碼剪斷:Moment.js將日期字符串轉換爲日期

var tempDate = moment(userInputFieldDate).format('DD-MM-YYYY'); 
alert(tempDate); 

在Chrome中,它做工精細(使用它使用JavaScript Date對象太工作),但給我的moment.js棄用警告

棄用警告:時刻建設回落到js日期。這是不鼓勵,將在即將到來的主要版本中被刪除。更多信息請參考https://github.com/moment/moment/issues/1407。 參數:[目標對象] 錯誤

在Firefox和Safari只是給出了警告窗口未定義的日期。所以不完全確定我應該如何將日期字符串轉換爲Date對象。有什麼建議麼 ?

回答

32

如果您獲得基於JS的日期String,則首先使用new Date(String)構造函數,然後將Date對象傳遞給moment方法。像:

var dateString = 'Thu Jul 15 2016 19:31:44 GMT+0200 (CEST)'; 
var dateObj = new Date(dateString); 
var momentObj = moment(dateObj); 
var momentString = momentObj.format('YYYY-MM-DD'); // 2016-07-15 

如果dateString15-07-2016,那麼你應該使用moment(date:String, format:String)方法

var dateString = '07-15-2016'; 
var momentObj = moment(dateString, 'MM-DD-YYYY'); 
var momentString = momentObj.format('YYYY-MM-DD'); // 2016-07-15 
+1

什麼是從用戶輸入dateString僅僅是 「2016年7月7日」? – noobcoder

+0

更新了答案 – Matyas

+0

你是一個拯救生命的人。作品像魅力:) – noobcoder