问题标签 [nodatime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5473 浏览

c# - 序列化 NodaTime JSON

与 BCL 的 DateTime 相比,我正在制作 NodaTime 的原型项目,但执行此结果会给我 recursionLimit 超出错误。

超出递归限制

这是我用来 JSON 化我的视图模型的函数。此函数返回后发生错误。

当我检查它时,我的视图模型是正确构建的。这是我的视图模型的代码。

我确信 NodaTime 对象没有正确序列化,因为当我从 viewModel 注释代码时,JsonResult 能够执行。

我从这个页面上读到了这个NodaTime API Reference

此命名空间中的代码当前不包含在 Noda Time NuGet 包中;它仍然被认为是“实验性的”。要使用这些序列化程序,请从项目主页下载并构建 Noda Time 源代码。

所以我下载并构建了源代码并替换了我的项目引用的 dll,但我不知道如何实现 JsonSerialization 类。

有人可以向我解释如何使用 NodaTime.Serialization.JsonNet 类使我的 NodaTime 对象可序列化吗?

0 投票
2 回答
611 浏览

asp.net-mvc-4 - 如何将IClock注入MVC​​4中的_Layout?

默认的 MVC 模板使用“@DateTime.Now.Year”来显示版权年份,但我更愿意在任何地方使用 NodaTime。

我目前正在使用 Ninject 将 IClock 的实例注入到执行特定时间或日期的控制器的控制器中。是否有推荐的方法来访问类似于“DateTime.Now”的 MVC 中的“全局 IClock”?我想我可以将 IClock 注入到每个控制器中,然后将其传递到每个视图中,但有时访问全局的东西会很好。

我知道我可以在 Layout 模板中使用 SystemClock.Instance ......改为引用一个全局的、可测试的 IClock 会更好。

0 投票
5 回答
5559 浏览

nodatime - 将 NodaTime DateTimeZone 转换为 TimeZoneInfo

我使用 NodaTime 是因为它很好地支持 zoneinfo 数据,但是我有一个案例需要将其DateTimeZone转换TimeZoneInfo为在 Quartz.NET 中使用。

这里推荐的方法是什么?IANA 有一个 Windows 时区和 zoneinfo 时区之间的映射文件,我可以创建一个利用此信息的扩展方法吗?

0 投票
2 回答
2231 浏览

c# - 如何将时间和 olson 时区转换为另一个 olson 时区的时间?

我有一个输入:

  1. 时间(上午 8:00)
  2. 奥尔森时区(美国/纽约)

我需要将时间转换为另一个奥尔森时区(美国/洛杉矶)

.net 或 nodatime 中进行该转换的最佳方式是什么。我基本上是在 C# 中寻找这种方法的等价物:

但是上面的这个 .Net 方法只适用于 Windows 时区名称(而且我有 Olson 名称)

0 投票
1 回答
1219 浏览

datetime - NodaTime 中的 System.TimeZoneInfo.IsDaylightSavingTime 等效项是什么?

System.TimeZoneInfo 有一个名为IsDaylightSavingTime的方法,该方法接受一个 DateTime 对象,如果指定的日期时间在该时区的 DST 中,则返回 true。NodaTime中是否有等效的功能或其他方式来实现相同的结果?

0 投票
1 回答
1233 浏览

c# - 使用 NodaTime 将无效(跳过的)日期时间值转换为 UTC

我想要完成的是将 DateTime(从假定为 EST/EDT 的字符串解析)转换为 UTC。我使用 NodaTime 是因为我需要使用 Olson 时区。

使用 NodaTime 的 ZoneLocalMappingResolver 将无效(跳过)的 DateTime 转换为 UTC 不会转换输入的分钟和秒部分,因为我已将 CustomResolver 配置为在间隙后返回间隔的开始。NodaTime 似乎没有等效的TimeZoneInfo.IsInvalidTime

如何使用 NodaTime 将跳过的日期时间值转换为 UTC 并匹配下面 Utils 类中的 GetUtc() 方法的结果?(Utils.GetUtc 方法使用 System.TimeZoneInfo 而不是 NodaTime)

这是测试用例:

这就是我得到的:

Assert.AreEqual 失败。预期:<2013-03-10 07:15:45.000000>。实际:<2013-03-10 07:00:00.000000>。

这是 Utils 类(也在github 上):

0 投票
1 回答
1175 浏览

nodatime - 如何使用 NodaTime 解析带有偏移量的日期和时间字符串?

我正在尝试学习如何在我的应用程序中使用 NodaTime,但找不到很多如何使用该库执行某些操作的示例。

鉴于:

  • 日期/时间文本"2012/08/30 17:45:00"
  • 格式字符串是"yyyy/MM/dd HH:mm:ss"
  • 与 UTC 的日期/时间偏移量是-5

我如何用 NodaTime 解析这个以获得一个

  • OffsetDateTime?
  • Instant?
0 投票
1 回答
151 浏览

iso - NodaTime 构造函数是否在 Hours 参数中接受 24

我希望在下载之前能快速回答一个关于 NodaTime 的问题。到目前为止,我正在阅读有关 NodaTime 及其 API 的内容,并且似乎经过深思熟虑。

我希望它可能有助于消除我在具有数据库后端、具有数据库提供程序的桌面客户端以及必须在主要浏览器上运行的 Web 客户端的应用程序中遇到的一些混乱。在各种数据库、数据库提供程序和 Web 平台上,对日期时间和时间的 ISO 8601 的支持差异很大。例如,Internet Explorer 遵循 ISO 8601,但 SQL Server 不遵循;Web UI 时间选择器没有,因为 Chrome 没有。

问题:在 NodaTime 中,24:00 是有效的时间值吗?24 是其 Time 构造函数的 hours 参数的有效参数吗?

背景:ISO 8601 允许午夜的两种表示形式:00:00 表示“今晨午夜”,24:00 表示“今晚午夜”。当 DateTime 对象时间线上时,时间元素为 24:00 的日期与第二天的 00:00 重合。它们是具有两种不同表示的同一时间线瞬间,两种表示均根据 ISO 有效。

Time-only 值与时间线分离。00:00 的时间出现在分离的 24 小时一天的开始,而 24:00 的仅时间值是 00:00 之后的 24 小时。Time 类型应该接受 24 小时。当 24 是小时时,秒、毫秒和刻度的最大值为 0(除非涉及模算术并且时间翻转,因此 24:01 是 00:01——但 ISO 对此实现细节无话可说, IIRC)。

0 投票
1 回答
11412 浏览

c# - 野田时间入门

我希望将 Noda 时间用于一个相当简单的应用程序,但是我正在努力寻找任何文档来处理一个非常基本的用例:

我有一个登录用户,并将他们的首选时区存储在设置中。来自客户端的任何日期/时间都采用已知的文本格式(例如“dd/MM/yyyy HH:mm”),具有已知的时区 ID(例如“Europe/London”)。我计划将这些时间转换为 UTC/Noda Instants,以防止需要在数据库中存储每个日期的时区信息。

首先,这听起来像一个明智的方法吗?我几乎可以自由地改变任何东西,所以很高兴能走上更好/更明智的路线。数据库是 MongoDb,使用 C# 驱动程序。

我尝试过的是沿着这些路线,但努力克服第一步!

我知道有人会问“你试过什么”,我所拥有的只是各种失败的转换。很高兴被指向“野田时间入门”页面!

0 投票
1 回答
1705 浏览

c# - 使用 NodaTime 正确处理开放时间

我目前正在编写一个相当简单的应用程序来处理企业的开/关时间,并且在试图弄清楚如何正确存储信息时遇到了严重的困难。

我们的大部分关键功能都严重依赖于让时间绝对完美,所以显然我希望以最好的方式完成工作!

此外,数据将由用户输入,因此如果底层表示稍微复杂一些(例如,使用 TimeSpan 来解释午夜过后的营业时间),这需要对用户不可见。

我需要首先存储业务的营业时间,按星期几,以及与之关联的时区,例如:

我目前认为存储它的最佳方法是使用这样的类:

然而,这里有两个主要的并发症:

  • 我不想存储 ZonedDateTime 的年、月或日期部分——我只关心 DayOfWeek。

    当然,我可以将每个值存储为 1970 年 1 月 1 日之后的第一个星期一/星期二等,但这似乎很老套,而且很明显是错误的——正如 NodaTime 的作者在谈到 BCL DateTime 的限制时非常正确地解释了这里执行。我也有一种感觉,如果稍后我们尝试对日期进行任何算术运算,最终可能会出现奇怪的古怪错误。

  • 无论如何,用户将不得不输入 ClosingTime。客户端我想我可以做一些简单的事情,比如总是假设ClosingTime是在OpeningTime之前的第二天,但同样,它并不完美,也没有考虑到可能开放超过24小时的地方(例如超级市场)

我考虑过的另一件事是使用带有小时/天的表格,并让人们突出显示一周中的几个小时来选择开放时间,但您仍然会遇到同样的问题,只想存储 OpenTime 的 DayOfWeek 部分。

任何建议都将不胜感激,在过去的 6 个小时里阅读我们人类代表时间的可笑愚蠢的方式让我有点筋疲力尽!