How to convert UTC+0 Date to PST Date?
我有这个UTC+0日期:
1 | 2011-11-28T07:21:41.000Z |
我想在C上把它转换成一个PST日期。我该怎么做?尝试:
1 | object.Data.ToLocalTime() |
但是我不能得到正确的值(应该是2011-11-27)
编辑在对另一个主题提出建议后,还尝试了以下方法:
1 2 3 4 5 6 | DateTime convertedDate = DateTime.SpecifyKind( DateTime.Parse(object.Data.ToShortDateString()), DateTimeKind.Utc); DateTime dt = convertedDate.ToLocalTime(); string dataVideo = dt.ToShortDateString(); |
但日期仍然是2011年11月28日,而不是2011年11月27日
我把钟改成用
1 2 3 | DateTime timestamp = DateTime.Parse("2011-11-28T07:21:41.000Z"); Console.WriteLine("UTC:" + timestamp.ToUniversalTime()); Console.WriteLine("PST:" + timestamp.ToLocalTime()); |
输出:
1 2 | UTC: 28/11/2011 7:21:41 PST: 27/11/2011 23:21:41 |
1 2 3 4 | DateTime timestamp = DateTime.Parse("2011-11-28T07:21:41.000Z"); Console.WriteLine("UTC:" + timestamp.ToUniversalTime()); Console.WriteLine("GMT+1:" + timestamp.ToLocalTime()); Console.WriteLine("PST:" + TimeZoneInfo.ConvertTimeBySystemTimeZoneId(timestamp,"Pacific Standard Time")); |
输出:
1 2 3 | UTC: 28/11/2011 7:21:41 GMT+1: 28/11/2011 8:21:41 PST: 27/11/2011 23:21:41 |
再加一点颜色
这是一个ISO8601时间戳,末尾的Z代表UTC。这表示一个特定的实例。
如果您尝试显示这个,它将在您的计算机当前时区显示这个时刻(我是东部时间,所以当我打印它时,我得到
如果我想把datetime
现在打印这个(因为它的种类现在是UTC),我得到
请注意,尽管时间的打印方式不同,但这两个日期时间所指的是同一时间点。
为了在不同的时区显示这个瞬间,IMO最简单的方法是TimeZoneInfo类(尽管我不确定它是否100%准确)。
现在打印将产生您想要的结果
请注意,此返回日期时间的