将包含日期时间和时区的字符串转换为UTC日期时间

时间:2019-09-08 22:04:23

标签: c# .net datetime

我有以下格式的字符串 “ dd-mmm-yyyy hh:mm zzz”,例如14-Sep-2019 13:05 EST” 时区可以是任何现有时区。我需要将其转换为DateTime和UTC。

我知道如何将时区缩写转换为时间偏移,我对此有一个字典。所以我可以将更改字符串例如转移到14-Sep-2019 13:05 -005。将其转换为日期时间UTC的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

文档是您的朋友,请选中here

var date = "14-SEP-2019 13:05 -05:00";
var format = "dd-MMM-yyyy H:mm zzz";
var dt = DateTimeOffset.ParseExact(date, format, CultureInfo.InvariantCulture);
Console.WriteLine(dt.ToUniversalTime());

答案 1 :(得分:1)

日期时间字符串的13:05显示基于24小时的时间,因此将HH代替小时,而在表示EST时区的日期时间字符串中使用-Hh代替-h

string dateTimeString = "14-Sep-2019 13:05 -5:00";

//local date time as per given time zone in date time string
DateTime dateTime = DateTime.ParseExact(dateTimeString, "dd-MMM-yyyy HH:mm zzz", CultureInfo.InvariantCulture);

DateTime dateTimeUTC = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTime, "UTC");