【发布时间】:2017-12-12 17:48:38
【问题描述】:
我使用此代码将格式为 "yyyy-MM-ddTHH:mm:ssZ" 的 UTC 字符串时间转换为日期时间。例如:
string PurchaseDate == "2017-12-12T14:29:26Z";
datetime dt = DateTime.ParseExact(PurchaseDate , "yyyy-MM-ddTHH:mm:ssZ", null);
我知道 PurchaseDate 时间是 UTC 时间(因为“Z”)。 dt 返回 {12/12/2017 5:59:26 PM} 这是我的本地时间(客户端时区)。换句话说 DateTime.ParseExact 将 PurchaseDate 转换为我的客户时区!我的问题是这种方法如何知道我的客户 TimeZone ?是否建议将其用于全局应用程序并完全显示用户时区??
更新我的问题:
有时为了在我的全球网站上实施时区管理,我用谷歌搜索可能的灵魂,我发现这个有用的链接:
How to display dates and times in clients timezone
一个月后,我发现我们可以使用 TimeZoneInfo.Local 来查找客户 TimeZone ! 所以我应该说那个链接没用吗?我想知道是否有一种简单的方法可以在 dotNet BackEnd 代码中找到客户端时区,那么为什么要使用这种复杂的方法呢??
【问题讨论】:
-
本地时区可供任何想要获取它的人使用。请参阅
TimeZoneInfo.Local属性。 -
您可以在 Google 中逐字输入 DateTime.ParseExact,第一个链接会将您带到 MSDN,它将回答您的问题。
-
它使用设置为
Application.CurrentCulture的文化,默认情况下从Windows 设置加载。您可以随时更改它 -
您确实需要了解
DateTime对象与其string表示不同的事实。DateTime是一个时间点,可以通过多种方式引用。 -
Z 不影响它的解析方式,它只是作为一个字符匹配。使用第四个参数,传递 System.Globalization.DateTimeStyles.AdjustToUniversal
标签: c# date datetime timezone-offset