将javascript日期发送到vb.net日期变量

时间:2009-04-04 16:37:48

标签: javascript vb.net asp.net-2.0

我需要将javascript日期值传递给vb.net函数。

我现在使用的方法: 将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日期格式不匹配。我收到的错误是无法解析的。

提前感谢您的帮助

5 个答案:

答案 0 :(得分:5)

使用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;

答案 1 :(得分:1)

为什么不将Javascript日期作为字符串传递,然后将其转换为VB.net中的日期类型。

Public Function ConvertJavaScriptDate(ByVal d as String) As Date
  Return Date.Parse(d)
End Function

另一种选择是使用CType(d,Date)。 CType是一个词法转换,它会尝试多种方式将字符串值转换为Date。

我在格式方面对JavaScript日期和VB.Net日期之间的区别并不十分熟悉,但如果你发布一个例子,我确信我们可以进行基本的转换。

答案 2 :(得分:1)

由于我不必担心文化差异,我将使用toLocaleString()

toLocaleString()解析与Date.Parse()兼容的字符串。

无论如何,感谢您发布回复。

答案 3 :(得分:0)

这只是日期时间格式问题,您可以查看此帖子了解更多详情。 How we can resolve the datetime problem shifting the Access DB from production server to live

答案 4 :(得分:0)

您还可以使用DateTime.ParseExact()告诉VB代码确切的输入字符串应该是什么样的。