我需要将javascript日期值传递给vb.net函数.
方法iam现在使用:将javascript日期转换为字符串将其存储在hiddenfield中从服务器代码中的隐藏字段检索字符串并使用date.parse解析它
麻烦的是Javascript dateformats
toString() - Sat Apr 4 22:19:00 UTC + 0530 2009
toDateString() - 2009年4月4日星期六
toLocaleString() - 2009年4月4日星期六,下午10:19:00
与vb日期格式不匹配.我得到的错误是它的无法解析.
在此先感谢您的帮助
使用ToLocaleString的问题在于您丢失了时区信息及其明显的区域设置特定,这意味着您需要使用正确的文化解析它.
我刚在想:-
DateTime d = DateTime.ParseExact(sInput,"ddd MMM d HH:mm:ss UTCzzzz yyyy",CultureInfo.InvariantCulture);
但这不符合跨浏览器(ECMA规范没有定义toString实际应该做什么).
但是我们知道Javascript Date对象的值是从1970年1月1日午夜开始的毫秒数.因此,您可以将日期对象的.valueOf存储在隐藏字段中.首先在字符串上使用Int32.Parse,从该值创建TimeSpan并将其添加到DateTime,1970 00:00:00 UTC + 0000.
int milliseconds = Int32.Parse(inputString); TimeSpan t = TimeSpan.FromMilliseconds(milliseconds); DateTime base = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); DateTime result = base + t;