也许答案是如此明显,我没有看到它,但我有一个问题,无论如何我都会冒险.
我希望允许.NET Web应用程序的用户输入日期/时间,将其存储在Oracle数据库中,无论他们在哪个时区,它始终显示为用户输入的原始原始版本.因此,如果加利福尼亚州的一个用户进入下午2点,而马里兰州的另一个用户进入下午2点,则他们都会向日本的用户显示为2PM.有两种类型的客户端,一个是Web用户,一个是Windows客户端用户(通过Web服务连接).
想想它就像我想彻底打破大多数应用程序所担心的所有时区智能.
我不想保存为字符串.我想要一个可以添加/删除小时和分钟的日期时间.
编辑:
这基本上是我遇到的确切问题.
The*_*ing 11
您应始终DateTime
以UTC格式存储(通用).当您显示它时,您可以选择您希望的时区,在您的情况下,可以为所有用户修复此时区,而不是基于位置.
// 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);
Run Code Online (Sandbox Code Playgroud)
这考虑了诸如日光节省之类的事情,如果开始保存本地化日期,可能会让您失望.