Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DateTime JavaScript与C#_C#_Javascript - Fatal编程技术网

DateTime JavaScript与C#

DateTime JavaScript与C#,c#,javascript,C#,Javascript,尽管有很多帖子,我还是读过代码中的魔法。 我为asp.net/mvc页面检索了数据库中的DateTime值('2011-03-30 00:00:00.000'),其中一些javascript需要读取并比较该值。神奇之处在于: <% DateTime unixTimeOffset = new DateTime(1970, 1, 1, 0, 0, 0, 0); DateTime testDate = new DateTime(2011,03,30,0,0,0,0); %> <%=

尽管有很多帖子,我还是读过代码中的魔法。 我为asp.net/mvc页面检索了数据库中的DateTime值('2011-03-30 00:00:00.000'),其中一些javascript需要读取并比较该值。神奇之处在于:

<% 
DateTime unixTimeOffset = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime testDate = new DateTime(2011,03,30,0,0,0,0);
%>
<%= (testDate - unixTimeOffset).TotalMilliseconds %>
...
我的日期是2011年3月29日星期二20:00:00GMT-0400(东部夏时制){}但不是应该的3月30日

我知道它提供了对当地时间GMT-4的日期引用,但如何使其独立? 有什么想法吗?谢谢

有关C#相关日期:

你可能想考虑使用,这样可以让你不受时区的影响。

 DateTime date = DateTime.UTCNow();
与Javascript相关的日期:

Javascript的一个特点是,它还可以让您获得世界时

//Declaration
var date = new Date(Date.UTC(YYYY,MM,DD));

//Use
var newDate = date.toUTCString();

希望这有帮助:)

获取客户端的时区偏移量,并将其添加到服务器的值中。像这样:

var serverOffset = 1301443200000;
var localOffset = myDate.getTimezoneOffset() * 60 * 1000;
var myDate = new Date(serverOffset + localOffset);
console.log(myDate); // Wed Mar 30 2011 00:00:00
请注意,
2011年3月29日星期二20:00:00 GMT-0400(东部夏令时)
与UTC中的原始日期在同一时间点。此方法创建表示新时间点的新日期。但是,如果您只是试图显示相同的日期值,那么这个方法就可以实现

或者,您可以使用
Date
的UTC方法以UTC格式打印原始日期:

function pad(num) {
    return ("0" + num).slice(-2);
}

function formatDate(d) {
    return [d.getUTCFullYear(), 
            pad(d.getUTCMonth() + 1), 
            pad(d.getUTCDate())].join("-") + "T" + 
           [pad(d.getUTCHours()), 
            pad(d.getUTCMinutes()), 
            pad(d.getUTCSeconds())].join(":") + "Z";
}

formatDate(new Date(1301443200000));
输出:

"2011-03-30T00:00:00Z"

你的代码是正确的。
myDate
变量保存正确的日期,因为
2011年3月29日星期二20:00:00 GMT-0400
与2011年3月30日星期三00:00:00 GMT+0000的时间点相同。我猜你看到了前者,因为那是你的电脑时区。使用
myDate.toutString()
查看UTC日期。

new date(date.UTC(1301443200000))
在Firebug中返回
无效日期{}
。这不是一个有效的论点。这是签名:
Date.UTC(年、月[、日期[、小时[、分钟[、秒[、毫秒]]])
@lwburk-清楚地混淆了声明和用法:)谢谢!请注意,我不认为JavaScript解决方案有多大帮助,因为真正需要的是
YYYY
MM
DD
,因此它们不能作为输入,而是作为输出。
"2011-03-30T00:00:00Z"