繁体   English   中英

使用 C# 在 AWS 中处理时区

[英]Timezone handling in AWS with C#

时区使用数据库中存储的 object 具有 UTC 时间戳。 用户请求此元素,并且应该在配置的时区中收到带有时间戳的元素。

如何使时区保持最新
在本地,我们将未来 5 年的时区数据(偏移量、DST 等)存储在我们的数据库中,并在这 5 年结束或时区发生一些变化时手动更新这些值。 (遗留代码...)

因为我们现在正在迁移到 AWS,所以我们还想自动化时区更新处理。

我们查看了 TimeZoneInfo,因此我们不必担心时区更改并让操作系统处理它。 但这不适用于 AWS Lambda,因为它只“知道”UTC。

是否有任何 AWS 服务或扩展程序可以根据 UTC 时间戳和时区提供本地化时间戳?
还是一种完全不同的方法来处理时区变化?

我真的很惊讶 AWS Lambda 实际上并没有完整的时区信息,但假设情况确实如此,您当然可以使用我的Noda Time项目。 它附带来自 IANA 的最新时区数据,如果您需要真正保持最新状态,您可以加载更新的文件(通常通过轮询更改从 nodatime.org 获得)。

我个人建议尝试在整个代码库中采用 Noda Time 作为更清晰的日期/时间 API,但如果你绝对想在其他任何地方坚持使用DateTime等,你可以使用如下方法:

public static DateTime ConvertUtcToZone(DateTime utc, string zoneId)
{
    var zone = DateTimeZoneProviders.Tzdb[zoneId];
    var instant = Instant.FromDateTimeUtc(utc);
    var zoned = instant.InZone(zone);
    return zoned.ToDateTimeUnspecified();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM