- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尽力弄清楚如何将 datetimeoffset 字符串持久保存到服务器,以便它正确绑定(bind)到 DateTimeOffset 属性。
我试过使用这样的东西:
moment.utc().format() + ' +' + new Date().getTimezoneOffset() / 60 + ':00';
这显示为 6/12/2017 22:27 +4:00,我将其作为字符串发送到服务器,但似乎每次都无法解析为 DateTimeOffset 对象。
目前,我正在将 Nancy 用于我的 Web API 框架,但我想知道 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 Date Format" ,它来自 .NET 中的 JavaScriptSerializer
类。与上一个示例对应的值为 /Date(1497628800000-0400)/
。如您所见,时间戳部分是 Unix 时间的毫秒分辨率版本,它是基于 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"
在服务器端,只需将您的属性公开为 DateTimeOffset
。不要尝试自己构建它。
关于javascript - 将 DateTimeOffset 持久化到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44511468/
如何从 DateTimeOffsetDateTimeOffset 对象中提取日期?我认为 Date 属性只会返回日期部分。但是,我一直在获取整个日期,即 7/17/2014 12:00:00 AM -
如何计算可为空的 DateTimeOffset 之间的时间?到 DateTimeOffset.Now ? 我需要像“x 天 y 小时前”这样的结果 我是从做这样的事情开始的。 var creati
在我的 ASP.NET Core Web-API 项目中,我收到了对我的一个 API Controller 的 HTTP POST 调用。 在评估 JSON 负载并反序列化其内容时,Json.NET
我从具有多个 datetimeoffet 列的表中选择一条记录,当我添加 for json auto 时,它将它从 2017-06-21 08:12:16.1430000 +00:00 到 2017-
我仍在学习 C# .NET 库,我该如何处理以下情况。如果有人能指导我正确的方向,将不胜感激。 最佳答案 您不能将空值分配给不可为空的值。解决此问题的一种方法是使用 ?? 添加默认(非空)值。 例如
我目前在 UTC+1 时区。 TimeZoneInfo.Local.BaseUtcOffset 返回 +1。 new DateTimeOffset(DateTime.Today).AddDays(4)
我想将默认值设置为 DateTimeOffset - 它不应该是 DateTime.Now 而是 DateTime.MinValue 或 default(DateTime) 任何想法我该怎么做?这段代
我有这些输入字符串: var timeStr = "03:22"; var dateStr = "2018/01/12"; var format = "yyyy/MM/dd"; var timeZon
如果我有一个表示有效 UTC 时间的 DateTime 实例,以及一个将 DateTime 转换为它适用的时区的偏移量,我该如何构造一个 DateTimeOffset 实例来表示它? var utcD
我正在使用 Quartz.NET( http://quartznet.sourceforge.net/ ) 并且我试图将开始日期设置为午夜。但是我在创建这个日期时遇到了问题。该应用程序将位于不同时区的
我遇到了以下要求的有趣问题:测试进程是否在同一天运行,如果没有运行进程。日期存储为 DataTimeOffset。 我最初的做法是: 将这两个值都转换为 UTC,因为这些日期可能是在不同的时区创建的并
我想从一个字符串中创建一个新的DateTimeOffset offset = -5 我愿意: string dt = "11082016"; DateTime date = DateTime.P
我在理解 DateTimeOffset 时遇到一些问题... 我正在尝试为 Quartz-Job 创建一个简单的触发器。存在一个 triggerbuilder,可以使用它创建这样的触发器: var t
我想从 DateTimeOffset 类型中获取格式化字符串,它应该如下所示:20. July 2009。(带点),我尝试使用以下代码: Birthday.ToString("dd. MMMM yyy
我阅读了有关 DateTimeOffset、属性 DateTime 的文档。 https://msdn.microsoft.com/en-us/library/system.datetimeoffse
我正在使用 C# 驱动程序在我的集合中存储 DateTimeOffset 字段。我想按一段时间对值进行分组,即。按天。 为此,我正在做类似的事情: db.getCollection('Collecti
我们正在将 XML DateTime 值解析为 DateTimeOffset 值。根据W3C XSD documentation for DateTime ,该类型可能有或没有时区信息。 我们的要求是
我有一个 DateTimeOffSet 类型的变量。我想过滤所有在 2010 年 1 月 1 日之后创建的项目。 所以我写了下面的查询: var _date = new DateTimeOffs
我将时间表作为一周中的一天、小时和分钟存储在数据库中。读取数据后,我们为下一次出现的那一天、小时和分钟创建一个 DateTime 对象,但我需要修改它以支持 DST。如有必要,我可以修改数据库。 我知
有没有办法将 DateTimeOffset 转换为午夜后的分钟数? 我希望偏移部分反射(reflect)在它给出的答案中。 最佳答案 dateTimeOffset.UtcDateTime.TimeOf
我是一名优秀的程序员,十分优秀!