原始javascript日期到VB.net日期时间
我有一个javascript AJAX调用,将javascript日期对象传递给ASP.NETMVC控制器。 以下是AJAX调用:原始javascript日期到VB.net日期时间,javascript,asp.net-mvc,vb.net,date,datetime,Javascript,Asp.net Mvc,Vb.net,Date,Datetime,我有一个javascript AJAX调用,将javascript日期对象传递给ASP.NETMVC控制器。 以下是AJAX调用: var timestamp = new Date(); $.ajax({ url: '', type: 'POST', data: { username: username, timestamp: timestamp, hash: ''}, dataType: 'json',
var timestamp = new Date();
$.ajax({
url: '',
type: 'POST',
data: { username: username,
timestamp: timestamp,
hash: ''},
dataType: 'json',
(我省略了一些敏感值,但重要的位在那里)
控制器有一个用于传递参数的对象,该对象可以很好地填充
Public Class AjaxParams
Public Property Username As String
Public Property Hash As String
Public Property Timestamp As String
End Class
以下是控制器声明:
<HttpPost()> _
Public Function RetrieveSalt(params As AjaxParams)
要么我在这里遗漏了一些非常简单的东西,要么将日期格式解析为带有时区信息的DateTime对象,等等,都是一件非常痛苦的事情
有人对如何最好地实现这一点有什么想法吗?最简单的方法是将javascript更改为:
...
timestamp: timestamp.toISOString(),
...
这将发出ISO-8601格式的UTC日期和时间,例如:“2013-09-17T19:40:07.057Z”
然而,这并不是在所有浏览器中都完全实现的。如果你想完全兼容老浏览器,那么你要么需要,要么考虑使用。
在.NET方面,解析已经为您准备好了
Dim dt As DateTime
dt = DateTime.Parse("2013-09-17T19:40:07.057Z", _
CultureInfo.InvariantCulture, _
DateTimeStyles.RoundtripKind)
有些人喜欢的另一种方法是只传递Date.getTime()
中的整数,然后将其添加到newdatetime(1970,1,1,0,0,0,DateTimeKind.Utc)
。我宁愿避免这种情况,因为整数的可读性不如ISO格式
还要考虑到,您试图解析的确切字符串格式因浏览器和语言环境的不同而变化很大。此方法对此免疫。最简单的方法是将javascript更改为:
...
timestamp: timestamp.toISOString(),
...
这将发出ISO-8601格式的UTC日期和时间,例如:“2013-09-17T19:40:07.057Z”
然而,这并不是在所有浏览器中都完全实现的。如果你想完全兼容老浏览器,那么你要么需要,要么考虑使用。
在.NET方面,解析已经为您准备好了
Dim dt As DateTime
dt = DateTime.Parse("2013-09-17T19:40:07.057Z", _
CultureInfo.InvariantCulture, _
DateTimeStyles.RoundtripKind)
有些人喜欢的另一种方法是只传递Date.getTime()
中的整数,然后将其添加到newdatetime(1970,1,1,0,0,0,DateTimeKind.Utc)
。我宁愿避免这种情况,因为整数的可读性不如ISO格式
还要考虑到,您试图解析的确切字符串格式因浏览器和语言环境的不同而变化很大。这种方法对此免疫。完美!我不知道为什么我一开始没有想到要这么做。非常感谢。完美的我不知道为什么我一开始没有想到要这么做。非常感谢。