DateTimeOffset 在 Parse 時會使用 Local TimeZone,這會與期望的 TimeZone 產生偏差,需要進行差值修補。
//TimeZoneInfo.GetSystemTimeZones().Dump();
/* (UTC+02:00) 開羅 */
var zone = TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time");
zone.Dump();
var date = DateTimeOffset.Parse("2019-07-01 15:00:00");
date.Dump(); /* 2019/7/1 下午 03:00:00 +08:00 */
var diff = date.Offset - zone.BaseUtcOffset;
diff.Dump(); /* 06:00:00 */
date = date.Add(diff);
date.Dump(); /* 2019/7/1 下午 09:00:00 +08:00 */
date = TimeZoneInfo.ConvertTime(date, zone);
date.Dump(); /* 2019/7/1 下午 03:00:00 +02:00 */
沒有留言:
張貼留言
你好!歡迎你在我的 Blog 上留下你寶貴的意見。