The*_*ica 0 javascript c# datetimeoffset nancy
我正在尽力找出如何将datetimeoffset字符串持久保存到服务器,以使其正确绑定到DateTimeOffset属性。
我试过使用这样的东西:
moment.utc().format() + ' +' + new Date().getTimezoneOffset() / 60 + ':00';
Run Code Online (Sandbox Code Playgroud)
这显示为6/12/2017 22:27 +4:00,我将其作为字符串发送到服务器,但每次都似乎无法解析为DateTimeOffset对象。
目前,我正在为我的Web api框架使用Nancy,但我也想知道Web API也是如此。
目前,我只是发送回偏移量并设置DateTimeOffset属性,如下所示:
dto.CommentDate = new DateTimeOffset(DateTime.UtcNow).ToOffset(new TimeSpan(dto.Offset, 0, 0));
有一个更好的方法吗?我可以发送整个日期而不是仅发送偏移量吗?
一些东西:
+04:00是俄罗斯部分地区和中东一些地方使用的补偿。从您博客上提到的位置来看,我认为您的意思是-04:00,它用于美国的东部夏令时间(以及其他时间)。(JavaScript getTimezoneOffset方法与此有关。)
+ ':00'假设所有时区偏移量均以小时为单位。实际上,很多:30是:45。
在中DateTimeOffset,该DateTime部分始终是本地时间,而不是UTC时间。换句话说,偏移量已被应用。
例如,如果当地时间2017-06-16 12:00:00在美国东部时区,那么我们将其表示为2017-06-16T12:00:00-04:00(采用ISO 8601格式)。相应的UTC时间将表示为2017-06-16T16:00:00Z。
ISO 8601格式不允许发送UTC时间加上本地偏移。我知道的唯一使用该约定的格式是较旧的“ ASP.NET JSON日期格式”,它来自JavaScriptSerializer.NET中的类。上一个示例的对应值为/Date(1497628800000-0400)/。如您所见,时间戳部分是Unix Time的毫秒级版本,它是基于UTC的。偏移量尚未应用,因此是多余的。该格式现在已被弃用,因此请不要这样做。
您似乎在客户端使用moment.js。这可以轻松生成您需要发送的字符串。
// get the current time, as an ISO 8601 string, with whole-second resolution
moment().format() // "2017-06-16T12:00:00-04:00"
// or, with millisecond resolution
moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZ') // "2017-06-16T12:00:00.000-04:00"
Run Code Online (Sandbox Code Playgroud)在服务器端,只需将您的媒体资源公开为即可DateTimeOffset。不要尝试自己构建它。
| 归档时间: |
|
| 查看次数: |
4695 次 |
| 最近记录: |