如何使用asp.net和c#或sql server获取过去日期的UTC时间
本文关键字:过去 获取 日期 时间 UTC server sql asp 何使用 net | 更新日期: 2023-09-27 18:29:20
你能指导我获取给定日期的utc时间吗(可以是过去时间,也可以是当前时间)。假设用户以2013年8月12日下午17:10的格式输入日期。有可能得到给定日期的UTC时间吗?我的项目使用的是asp.net、c#3.5和sqlserver2008。请给我建议实施这个选项的方法。请告诉我们有关我的查询的更多信息。感谢
PHT不是输入字符串的一部分,但我附加它以显示其费城时区。但我从管理屏幕上得到了这个缩写,其中存储了国家、到UTC/GMT的时差和时区的缩写。
我会详细说明我的要求。用户输入他/她的本地时区的日期。此日期可以是过去的日期,也可以是当前的日期。例如,用户正在输入日期2013年8月12日17:10,这是一个phillipines的日期和时间(假设)。我希望将此日期转换为UTC/GMT日期和时间。我的做法是,我要求管理员用户存储每个国家的时差。当用户输入日期并基于所选国家/地区时,如果用户选择了国家/地区菲律宾,我会将其确定为菲利普斯日期和时间。然后我添加或减去该时差以获得UTC/GMT日期。我担心的是,如果用户输入了过去时间的日期和时间,那么我们如何才能获得该日期的UTC时间,因为我们只能获得当前的UTC时间。希望我能给你足够的细节。我知道代码,能够在谷歌上搜索,但我需要一个好的方法来做到这一点。我只需要概念就可以了。
我从管理屏幕上得到了这个缩写,其中存储了国家、到UTC/GMT的时差和时区的缩写。。。
如果你试图支持世界上大多数人,那是不够的。时区不仅仅是UTC的偏移量。在大多数情况下,您不能只向用户索取偏移量。请阅读时区标签wiki。您需要知道时区是什么。在这种情况下,它要么是Windows时区数据库的"Singapore Standard Time"
,要么是IANA数据库的"Asia/Manila"
。
例如,用户正在输入日期2013年8月12日17:10,这是菲律宾的日期和时间(假设)。我希望将此日期转换为UTC/GMT日期和时间。
以下是如何使用C#转换Windows时区:
DateTime local = new DateTime(2013, 8, 12, 17, 10, 0);
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Singapore Standard Time");
DateTime utc = TimeZoneInfo.ConvertTimeToUtc(local, tz);
以下是如何通过Noda Time库使用IANA数据库进行转换:
LocalDateTime local = new LocalDateTime(2013, 8, 12, 17, 10, 0);
DateTimeZone tz = DateTimeZoneProviders.Tzdb["Asia/Manila"];
ZonedDateTime zdt = local.InZoneLeniently(tz);
Instant utcinstant = zdt.ToInstant(); // for a NodaTime instant
DateTime utcdt = zdt.ToDateTimeUtc(); // for a regular UTC DateTime
我跳过了您以字符串开头的事实,因为您的问题更多地集中在UTC和时区问题上。如果您需要帮助,请查看DateTime.Parse
或DateTime.ParseExact
。如果你选择Noda Time,看看他们的文本解析文档。
尝试作为
DateTime utcDateTime = DateTimeVariable.ToUniversalTime();