提问者:小点点

Javascript ASP。不含时区信息的净日期格式-时区偏移量


我有一个客户端JavaScript,它用JavaScript生成日期(newdate(2007,5,1))。

我需要这个日期传递到一个隐藏的字段,后面的代码可以访问。

我的问题是,当隐藏字段转换为DotNet datetime时,时间是不正确的。这是因为JavaScript包含来自客户端浏览器的时区信息。

然后,DotNet使用此信息根据服务器时间和客户端时间之间的差异重新计算时间。

我需要的是JavaScript中的年、月和日。

我不想通过3 int值传递给后面的代码,因为这将是整个应用程序的重大变化。

对我来说,实现这一目标的最佳方式是什么?

如果我可以在没有时区信息的情况下设置UTC时间,我认为这可能会奏效。

任何帮助都很感激。


共3个答案

匿名用户

如果我理解正确的话,

你需要。toDateString()

var date = new Date(2007,5,1);

document.write(date);
document.write("<br><br>versus<br><br>");
document.write(date.toDateString());

印刷品

Fri Jun 01 2007 00:00:00 GMT+0800 (Taipei Standard Time)

versus

Fri Jun 01 2007

匿名用户

您可以使用DateTimeOffset。ParseExact使用指定的格式将字符串解析为DateTimeOffset值:

        string dateString = "Fri Jun 01 2007 00:00:00 GMT+08:00";
        DateTimeOffset date = DateTimeOffset.ParseExact(dateString, "ddd MMM dd yyyy hh:mm:ss 'GMT'zzz", CultureInfo.InvariantCulture);

您必须将GMT加引号,否则M将被解释为格式字符。

不幸的是,不可能忽略字符串值的一部分。如果你的字符串包括时区的名称,你必须首先拆分它,并获得没有描述的部分

        string dateString = "Fri Jun 01 2007 00:00:00 GMT+08:00 (Taipei Standard Time)";
        var parts=dateString.Split('(');
        string datePart = parts[0].TrimEnd();
        var date=DateTimeOffset.ParseExact(datePart,"ddd MMM dd yyyy hh:mm:ss 'GMT'zzz",CultureInfo.InvariantCulture);

匿名用户

您可以从已创建的javascriptDate对象构建字符串-它具有getDate()getMonth()getFullYear()方法,您可以使用这些方法在隐藏字段中构建所需的确切字符串。