将 C# DateTime 转换为 Javascript 日期
Posted
技术标签:
【中文标题】将 C# DateTime 转换为 Javascript 日期【英文标题】:Convert C# DateTime to Javascript Date 【发布时间】:2013-07-30 18:43:10 【问题描述】:我在 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();
有没有更好的方法来比较日期是否是 C# New DateTime?
我如何解析并返回“yyyy/MM/dd”格式的日期?
【问题讨论】:
在 C# 端转换它的代码是什么?例如,无论服务器在哪里,它都可能是特定于文化的。 “重复”***.com/questions/1056728/… 服务器端的代码只是 CheckDate(@model.Dated) 只是一个DateTime C#对象。 http://momentjs.com/ 什么日期时间结构来自c#?@DKALT 【参考方案1】:鉴于您一直坚持的输出,我想不出更好的方法来在 javascript 端捕获 0 的 DateTime
。
Date.parse
应该可以满足您的解析需求,但它会返回毫秒数,因此您需要在其周围包裹一个 Date 构造函数:
var date = new Date(Date.parse(myCSharpString));
返回日期,您只需要
date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + (date.getDate() + 1);
(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());
(date.getMonth
是 0 索引,而 date.getDate
是 1 索引但容易受到时区差异的影响。)
小提琴:http://jsfiddle.net/GyC3t/25/
【讨论】:
太棒了!!谢谢。 Javascript 日期月份为 0 索引,但日期为 1 索引。 @JoeB 哇。那对我来说太可怕了。感谢您接听! 我想得到 2 位数的月份和日期,有什么想法可以在 javascript 中进行吗? @Gupta 您的评论不准确。我已经给出了2位数的答案。如果您想知道如何将 4 到 04 之类的数字填零,您真的只想在 Google 上搜索“零填 javascript”。这是弹出的第一个答案之一:***.com/questions/10073699/…【参考方案2】:我使用以下方法将 Javascript 日期传递到 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);
【讨论】:
以上是关于将 C# DateTime 转换为 Javascript 日期的主要内容,如果未能解决你的问题,请参考以下文章
将 C# DateTime 转换为 Javascript 日期
琐事:如何将 JSON2.org DateTime 字符串转换为 C# DateTime
将序列化的 C# DateTime 转换为 JS Date 对象