将C#DateTime转换为Javascript日期

DK *_*ALT 36 javascript c# datetime-format

我在Javascript中有一个从MVC接收C#DateTime的函数.如果日期为空,则应返回" - ",如果它是有效日期,则应返回格式化日期.

重要提示:无法以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();
  }
Run Code Online (Sandbox Code Playgroud)

如果日期是C#New DateTime,有没有更好的方法来比较?

如何以"yyyy/MM/dd"格式解析并返回日期?

Sco*_*ica 48

鉴于你坚持使用的输出,我想不出更好的方法来DateTime在javascript端捕获0.

Date.parse 应该适用于您的解析需求,但它返回毫秒数,因此您需要在其周围包装Date构造函数:

var date = new Date(Date.parse(myCSharpString));
Run Code Online (Sandbox Code Playgroud)

对于返回日期,您只需要

date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1);
Run Code Online (Sandbox Code Playgroud)

(date.getMonth并且date.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());
Run Code Online (Sandbox Code Playgroud)

(date.getMonth0索引,而date.getDate1索引,但易受时区差异的影响.)

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

  • Javascript日期月份为0索引,但日期为1索引. (3认同)