代码之家  ›  专栏  ›  技术社区  ›  SetiSeeker

不带时区信息的javascript ASP.NET日期格式-时区偏移量

  •  2
  • SetiSeeker  · 技术社区  · 15 年前

    我有一个客户端的javascript,它用javascript生成一个日期。( new Date(2007,5,1) )。

    我需要将这个日期传递给隐藏字段,代码隐藏可以访问该字段。

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

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

    我从javascript中需要的只是年份、月份和日期。

    我不想将3个int值传递给我的代码,因为这将是对整个应用程序的一个重大更改。

    我最好的方法是什么?

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

    感谢您的帮助。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Reigel Gallarde    15 年前

    demo

    如果我理解正确,

    你需要 .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
    
        2
  •  1
  •   Panagiotis Kanavos    15 年前

    可以使用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);
    
        3
  •  0
  •   Oded    15 年前

    您可以从javascript构建一个字符串 Date 您创建的对象-它 getDate() , getMonth() getFullYear() 方法,可用于在隐藏字段中建立所需的精确字符串。

        4
  •  0
  •   Siva Senthil    15 年前

    当您在代码隐藏文件中获取值时,我建议使用C中的格式规范。让我解释一下我的意思- javascript中日期(…)的日期时间格式如下

    2010年6月1日星期二11:12:15 UTC+0530

    在C中转换为以下格式字符串- “ ddd MMM d hh:mm:ss UTCzzz yyyy

    对于此格式字符串,请使用 DateTime.ParseExact(string <Hidden Field Value>, format, provider) 以C为单位获取日期时间的正确值。

    将提供程序用作 System.Globalization.CultureInfo.InvariantCulture .