问题标签 [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.
asp.net - NodaTime 转换(第 2 部分)。如何?
在我的第一篇文章之后:
在 ASP.Net MVC 3 Razor 网站上使用 NodaTime 进行日期时间转换。如何?
我正在努力寻找一种使用 NodaTime 在本地和 UTC(两种方式)之间转换日期/时间的简单方法。
目前的图片是:
- 我在数据库中将日期/时间保存为 UTC。
- 在向用户显示时,我应该考虑本地时区并相应地进行转换。
- 当用户提供日期/时间作为过滤器时,我需要在发送到 SQL 查询之前将其转换回 UTC。
到目前为止我所拥有的:
从 UTC 转换为本地的扩展(这部分工作正常):
从本地转换回 UTC 的扩展(这部分是问题):
我在这里做错了什么?
timezone - 分区日期时间到 UTC 时间 - LocalDateTimePattern 抛出异常
我正在尝试使用以下代码在 NodaTime 中使用 LocalDateTime 模式从分区日期时间获取 UTC 时间。
在下面提到的场景中,我在解析期间遇到异常- 1) 如果模式类似于“MM/dd/yyyy HH:mm:ss tt”并且 DateTime 字符串类似于“5/28/2013 1:02:ss PM” 2) 如果模式类似于“MM-dd-yyyy HH:mm:ss tt”并且 DateTime 字符串类似于“5/28/2013 1:02:ss PM”
对于第一种情况,如果我将模式更改为“M/dd/yyyy HH:mm:ss tt”,它将起作用,但我最终会失去前导零。如果我将模式更改为“MM/dd/yyyy HH:mm:ss tt”,第二种情况将起作用
有没有其他方法可以获取 UTC 值,或者我在这里做错了什么。
datetime - 使用 NodaTime 将 UTC 日期时间字符串转换为 Zoned DateTime
我需要将 UTCDateTime
字符串转换为ZonedDateTime
.
UTCDateTime
字符串只能是一种模式,因为 SharePoint类型列(M/dd/yyyy h:mm:ss tt)
中仅支持此格式。DateTime
假设(5/28/2013 1:00:00 PM)
作为我的 UTC 时间,我怎样才能将其转换为ZonedDateTime
?我目前正在使用下面的代码来获取ZonedDateTime
.
上面的代码需要year
, month
, day
, hour
, 和minute
asint
值。有没有更简单的方法可以ZonedDateTime
直接从 UTC 字符串中获取?
datetime - 使用 NodaTime 解析 DateTime 字符串
我们如何使用 NodaTime 解析 Zoned DateTime 字符串?我目前正在使用 LocalDateTimePattern 进行解析,但我认为产生的 DateTime 值将在服务器的时区中。
我在查看 Noda Time API时遇到了 ZonedDateTime 模式。但是,我无法使用它。我错过了什么吗?
c# - 您如何处理 .net 中的“模糊时间”?
我需要将不同时区的“日期时间”值转换为 UTC,反之亦然。我使用 TimeZoneInfo 来做到这一点。但是,问题在于“夏令时”时间更改何时发生。
例如,今年,下一次时间更改发生在 11 月 3 日凌晨 2 点 [CDT]。所以在 11 月 3 日,凌晨 1 点 [CDT] 转换为 6 点,并且随着时间更改在下一小时发生,我们得到 1 点[现在它的 CST]再次,它也被转换为早上 6 点。我尝试了此页面上的代码,但没有说明如何处理此问题。那么这个问题怎么处理???
编辑:
我尝试了 NodaTime,当我进行转换时
它抛出 AmbiguousTimeException。这很好,我也可以使用 TimeZoneInfo 来做到这一点。但是我怎么知道我需要选择哪个 localTime 值?
编辑2:
这是与马特聊天讨论的链接。
c# - 如何在 Windows 和 IANA 时区之间进行转换?
如时区标签 wiki中所述,有两种不同风格的时区。
Microsoft 提供的用于 Windows 和 .Net
TimeZoneInfo
类(在 Windows 上运行时)的那些由诸如"Eastern Standard Time"
.在 TZDB 中由 IANA 提供并由 .NET
TimeZoneInfo
类在 Linux 或 OSX 上运行时使用的那些由诸如"America/New_York"
.
许多基于 Internet 的 API 使用 IANA 时区,但出于多种原因,可能需要将其转换为 Windows 时区 ID,反之亦然。
这如何在 .Net 中实现?
c# - 使用 Nodatime 将 UTC 时间转换为本地时间
我得到了这种格式“ddMMyyHHmmss”的时间。我知道时间是 UTC 格式的。我想使用 NodaTime 库将其转换为我的本地时区,但我似乎无法弄清楚。我的本地时区目标是新西兰。
这是我尝试过的:
nuget-package - NodaTime.Serialization.JsonNet 在哪里?
在最新的 API 文档中,NodaTime.Serialization.JsonNet 显示为 NodaTime 库的一部分。
但我在任何地方都找不到。这是我的 VisualStudio 中 ObjectBrowser 中的 NodeTime。
我什至查看了 NodeTime.Testing 并没有找到它。
我不知道该去哪里找了。这两个(NodeTime 和 NodeTime.Testing)只是 NuGet 上可用的包。
c# - NodaTime 与 MongoDB:值类 NodaTime.ZonedDateTime 无法反序列化
我正在使用最新版本的NodaTime和Mongo DB Official Driver。我有一个简单的 POCO 类,它在一些属性中使用 NodaTimeZonedDateTime
作为 .NET DateTime 的替代品。
我可以轻松地将模型放入集合中,但是当我尝试读取查询的模型时,我得到以下信息MongoDB.Bson.BsonSerializationException
:
值类 NodaTime.ZonedDateTime 无法反序列化
解决/解决此问题的好方法或最佳实践是什么?
更新
在发布我的问题解决方案后,我面临一个可能的新问题......当我查询集合并在查询中使用 DateTime 时,就像where SomeDateTime < now' (where
现在is a variable I create from system time) it seems that each document must be deserialized using my
可以评估 where 子句之前的 ZonedDateTimeSerializer`。这看起来像一个很大的性能问题,不是吗?我真的不得不考虑再次回到 BCL DateTime,即使它很痛。
更新 2
我接受了我的解决方案ZonedDateTimeSerializer
,但我对 NodaTime 与 MongoDB 的结合感到不舒服,虽然两者都是很好的单独解决方案。但是如果没有大量的操作,它们目前不能很好地协同工作。
c# - 自定义序列化程序如何影响搜索?
我正在尝试在我的应用程序中使用NodaTime。该应用程序将数据持久保存在 mongodb 数据库中。考虑下面的类
如果不添加自定义序列化程序,Instant
类的属性不会存储在数据库中。从数据库读取文档也失败了。
我创建了上面的序列化程序并正确注册了它。我现在可以使用为Instant
.
我的问题是 C# 驱动程序如何使用 linq 处理搜索?
我得到了正确的文件清单。我试图了解 mongodb 如何获取这些数据。它是否首先加载所有数据,正确反序列化然后过滤?还是序列化Instant
where 子句的值并使用序列化的值过滤所有文档,加载匹配的文档然后反序列化?
我尝试查看 mongodb 探查器记录的查询,但它似乎没有记录任何内容。我已将分析级别设置为 2。
Instant
在序列化值的情况下是 a long
。但在 的情况下ZonedDateTime
,序列化值将是具有两个属性的文档。在这种情况下,搜索将如何工作?
编辑:
我能够让分析工作。以下 c# 查询,
导致以下 mongodb 查询
意思是,c# 驱动程序序列化我的Instant
对象并使用序列化的值来过滤数据库本身的结果。