gpt4 book ai didi

c# - 用户日期时间设置为 GMT,如何将日期转换为本地化设置?

转载 作者:行者123 更新时间:2023-11-30 22:48:28 25 4
gpt4 key购买 nike

在我的用户设置中,我有一个包含所有 GMT 日期的下拉列表供用户选择。

在 C# 中,我如何将存储在数据库中的日期时间转换为它们的 GMT 时间?

数据库中存储的时间为服务器时间。

最佳答案

对于 .NET 3.5+,您可以将系统时区标识符与用户一起存储(您可以从 TimeZoneInfo.GetSystemTimeZones 获取)并使用 TimeZoneInfo 在两者之间进行转换时区:

// In a User class that has a string timeZoneId field (for example)
public DateTime GetLocalDateTime(DateTime originalDate) {
DateTime utcDate = TimeZoneInfo.Local.ConvertToUtc(originalDate);
TimeZone userTimeZone = TimeZoneInfo.FindSystemTimeZoneById(this.timeZoneId);
return TimeZone.ConvertTime(utcDate, userTimeZone);
}

在 .NET 2.0 中,您只能使用旧的 TimeZone 类,该类仅适用于本地系统。您不会自动为用户获取夏令时信息,因此您必须自己将其与基本 GMT/UTC 偏移量一起存储。

// In a User class that has a double utcOffset field (for example)
public DateTime GetLocalDateTime(DateTime originalDate) {
DateTime utcDate = TimeZone.CurrentTimeZone.ToUniversalTime(originalDate);
return utcDate.AddHours(this.utcOffset);
}

// Usage
DateTime localDate = user.GetLocalDateTime(DateTime.Now);

关于c# - 用户日期时间设置为 GMT,如何将日期转换为本地化设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637144/

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