gpt4 book ai didi

c# - .NET 保存 DateTime 并完全忽略时区

转载 作者:太空狗 更新时间:2023-10-30 00:21:07 24 4
gpt4 key购买 nike

也许答案很明显,我没有看到,但我有一个问题,无论如何我都会冒险提出。

我想让 .NET Web 应用程序的用户输入日期/时间,将其存储在 Oracle 数据库中,无论他们处于哪个时区,它始终显示为输入的原始版本用户。因此,如果加利福尼亚州的一位用户输入下午 2 点,而马里兰州的另一位用户输入下午 2 点,那么他们都会向日本用户显示为下午 2 点。可能有两种类型的客户端,Web 用户和 Windows 客户端用户(通过 Web 服务连接)。

把它想象成我想彻底打破大多数应用程序担心的所有时区智能。

不过我不想保存为字符串。我想要一个可以添加/删除小时和分钟的日期时间。

编辑:

This基本上就是我遇到的确切问题。

最佳答案

您应该始终以 UTC 格式(通用)存储 DateTime。当你显示它时,你可以选择哪个 timezone你希望,在你的情况下,这可以为所有用户固定,而不是基于位置。

// when recording date time
DateTime utcDateTime = DateTime.UtcNow;

// parse DateTime back out from string
DateTime utcDateTime = DateTime.SpecifyKind(DateTime.Parse(dateStr),
DateTimeKind.Utc);

// localized DateTime
DateTime localDate = utcDateTime.ToLocalTime();

// fixed DateTime based on timezone
string timeZoneKey = "New Zealand Standard Time";
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneKey);
DateTime nzlocalDate = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, timeZone);

这考虑到了诸如夏令时之类的因素,如果开始保存本地化日期,这些因素可能会让您感到困惑。

关于c# - .NET 保存 DateTime 并完全忽略时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374731/

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