2013-07-30 31 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); 
相关问题