2015-07-11 171 views
2

我的任務是使用日期選擇器以指定的格式選擇一個日期,例如(MM-DD-YYYY)並以ISO格式傳遞給服務器。使用moment.js將datepicker日期轉換爲ISO格式

雖然它測試的輸出ISO格式的日期是一天後。

例如

如果我選擇

07-13-2015 

我的輸出ISO格式是

ISO format is :2015-07-12T18:30:00.000Z 

在這裏你可以看到日期是13,但輸出的日期是12

我我來自印度。我試着用zone和utcOffset,結果沒有結果。如何設置正確

這裏是JSFIDDLE

js代碼

$('#datetimepicker1').on("dp.change",function(e){ 
     var selectedDate = $('#datetimepicker1').find("input").val(); 
     selectedDate = moment(selectedDate,"MM-DD-YYYY"); 
     $(".temp").text(moment(selectedDate).toISOString()); 
    }); 

我確實有其價值將在變化進行更新,這將在服務器端處理的隱藏字段。沒有問題。

+0

問題已解決? – HardikT

回答

2
$('#datetimepicker1').on("dp.change",function(e){ 
     var selectedDate = $('#datetimepicker1').find("input").val(); 
     selectedDate = moment(selectedDate,"MM-DD-YYYY"); 
     $(".temp").text(selectedDate.toISOString()); 
    }); 

您的selectedDate已經是一個時刻對象,因此您不需要將它反饋到另一個時刻。

例子:

var test = '07-13-2015' 
var mtest = moment(test,"MM-DD-YYYY") 
mtest.toISOString() 
"2015-07-13T06:00:00.000Z" 
+0

你能發現你的代碼和我的代碼之間的區別嗎?並且datepicker的日期不是作爲時刻對象來的。它顯示無效的日期。我做了一個jsfiddle.Any我的問題是如果選擇13 ISO字符串說12 ...請看看我的jsfiddle。 –

+0

玩過JSFiddler並重新閱讀您的問題後,我認爲您可能會遇到時區更改的問題。由於印度在UTC之間有足夠的時差,我認爲你看到日期的變化。我認爲這是我無法複製您的問題(本地或在JSFiddler中)的原因。 –

+0

我的評論關於selectDate已經是一個時刻,關於第三行:這將把selectedDate轉換爲片刻=> selectedDate = moment(selectedDate,「MM-DD-YYYY」);因此,在第四行中,您將一個對象放入新的時刻對象=> $(「。temp」)。text(moment(selectedDate).toISOString()); –

0

你可以嘗試一次的日期格式轉換爲UTC。

selectedDate = moment(selectedDate).utc('MM-DD-YYYY')