gpt4 book ai didi

c# - NodaTime,我们应该使用 LocalDateTime 来预订时间吗?

转载 作者:行者123 更新时间:2023-11-30 21:50:06 25 4
gpt4 key购买 nike

我们开发并维护了一个已在丹麦使用多年的预订系统。

不过,我们现在正在将业务范围扩展到一个时区以外的国家/地区,一些客户将拥有一个跨越多个时区的系统。所以我们天真的 DateTime 方法将来肯定会给我们带来问题。我喜欢 NodaTime 方法,它针对特定目的使用特定类,这应该使我们的开发人员的学习曲线更容易。

但是,我们保存的其中一件事是特定餐厅的特定预订的到达时间。对我来说,这听起来像是我会使用 LocalDateTime 的情况,这确保即使是坐在不同时区的计算机前的经理仍然会看到正确的到达时间(相对于餐厅时区的时间,而我们不必考虑时区) 因为没有使用时区。

如果在某些时候我们想在用户本地的不同时区显示这些时间(目前对我来说这没有意义),我们可以通过使用餐厅的时区然后计算相对时间来实现.

要使用的正确类是 LocalDateTime,在 SQLServer 中保存为日期时间吗?

是否有任何理由让我们考虑将 ZonedDateTime 用于此类用例?

最佳答案

如果您始终知道与本地预订日期/时间相关联的时区,那基本上没问题。据推测,时区与预订的餐厅有关。

您可能会遇到的一个问题是 LocalDateTimeDateTimeZone 对并不总是明确确定一个瞬间。例如,如果您的餐厅营业至深夜,并且您从夏令时转到冬令时凌晨 2 点(变为凌晨 1 点),那么凌晨 1.15 的预订实际上可能会晚于凌晨 1.45 的预订。这就是为什么 ZonedDateTime 包含一个 LocalDateTime、一个 DateTimeZone 引用和一个 Offset 来解决歧义。

此外,仅使用 LocalDateTime 可能会使执行某些查询变得更加棘手 - 如果您想按照实际发生的顺序进行预订,则需要将它们解析为 ZonedDateTime 值。但也许您根本不需要这些查询。

基本上,您应该能够为任何预订提供 LocalDateTimeDateTimeZone - 并考虑如何解决歧义(或跳过时间,从冬令时到夏令时)。如果您有该信息/政策,那很好。

关于c# - NodaTime,我们应该使用 LocalDateTime 来预订时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36527933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com