[英]C# convert string with time zone to datetime 06:23 (UTC)
我正在尝试将字符串转换为 DateTime。 该字符串包括时区。
这是HH:mm (time zone)
04:47 (CEST)
的样子。
时区并不总是相同的。 我尝试过使用一系列格式,但有没有更好的方法来转换它? 我还阅读了microsoft 文档,但找不到任何转换此文档的方法
string[] formats = new[] { "HH:mm (CEST)", "HH:mm (CET)" };
var processedData = DateTime.ParseExact(
"04:47 (CEST)",
formats,
CultureInfo.InvariantCulture,
DateTimeStyles.None);
Console.WriteLine(processedData);
您可以将它们替换为时区偏移量,然后使用正确的ParseExact
-format 和DateTimeStyles.AdjustToUniversal
来获取通用时间(UTC):
public static void Main(string[] args)
{
string[] inputs = { "04:47(CEST)", "14:47(CET)" };
DateTime?[] utcTimes = Array.ConvertAll(inputs, TryParseUtcTime);
}
private static DateTime? TryParseUtcTime(string input)
{
input = input.Replace("(CEST)", " +2").Replace("(CET)", " +1");
if(DateTime.TryParseExact(input, "HH:mm z", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.AdjustToUniversal, out DateTime dt))
{
return dt;
}
return null;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.