2013-07-30 62 views
29

我在JavaScript中,從MVC收到一個C#日期時間的函數。 如果日期爲null,它應該返回「 - 」,如果它是一個有效的日期應該返回格式化的日期。轉換C#日期時間爲Javascript日期

重要:它無法發送日期從C#另一種格式。

的Javascript:

function CheckDate(date) { 

    if (date == "Mon Jan 01 0001 00:00:00 GMT+0000 (GMT Daylight Time)") 
    return "-"; 
    else { 
    var dat = new Date(date); 
    return dat.getFullYear() + dat.getMonth() + dat.getDay(); 
    } 

有沒有更好的方式來比較,如果日期是C#新的datetime?

,如何解析和返回「YYYY/MM/DD」格式的日期?

+1

什麼碼轉換它在C#的一面呢?例如,無論服務器在哪裏,它都可能是針對文化的。 –

+0

「Duplicate」http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript – 2013-07-30 14:43:30

+0

服務器端的代碼只是CheckDate(@ model.Dated) 它只是一個DateTime C#對象。 –

回答

35

鑑於你堅持使用的輸出,我想不出有什麼更好的方法來捕捉javascript側DateTime 0。

Date.parse應適用於您的分析需求,但它返回的毫秒數,所以你需要用一個Date構造周圍:

var date = new Date(Date.parse(myCSharpString)); 

對於歸期,你只是想

date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1); 

date.getMonthdate.getDate是0索引代替1-索引。)

小提琴: http://jsfiddle.net/GyC3t/

編輯 由於JoeB的捕捉,讓我做了修正。 date.getMonth()函數是0索引的,但date.getDate()函數是1索引的。小提琴是「工作」與+1因爲date.getMonth工作在當地的時間,這是UTC前。我沒有正確檢查文檔,只是加了1,並且它與小提琴一起工作。

這樣做更正確的方法是:

對於歸期,你只是想

date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getUTCDate()); 

date.getMonth是0索引而date.getDate爲1索引但易被時區差異)

小提琴:http://jsfiddle.net/GyC3t/25/

+1

太棒了!謝謝。 –

+3

JavaScript日期月份爲0索引,但日期爲1索引。 – JoeB

+0

@JoeB哇。那對我來說太可怕了。感謝您的支持! –

1

我用下面通過JavaScript日期INT ØC#:

var now = new Date(); 
var date = (now.getTime()/86400000) - (now.getTimezoneOffset()/1440) + 25569; 

所以,如果你從C#的毫秒數,它應該是這樣的:

var csharpmilliseconds; 
var now = new Date(); 
var date = new Date((csharpmilliseconds + (now.getTimezoneOffset()/1440) - 25569) * 86400000); 
相關問題