正则表达式 - 根据C#中的UTC显示日期和时间

时间:2018-02-08 09:22:53

标签: c# regex datetime

我的时间戳是这样的:20151020T160000Z

我写了以下逻辑来从时间戳中获取日期时间:

replace(string(20151020T160000Z), '^(19|20\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])T(20|21|22|23|[0-1]\d)([0-5]\d)([0-5][0-9])Z', '$3-$2-$1 $4:$5')

此代码的输出为:20-10-2015 16:00 但我希望按UTC + 2输出,即: 20-10-2015 18:00

1 个答案:

答案 0 :(得分:2)

执行此操作的方法是DateTime.ParseExactTimeZoneInfo提供的实用程序的组合。注意我不知道你正在使用什么时区,所以我使用了UTC大约+2。

var input = "20151020T160000Z";
var dt = DateTime.ParseExact(input, "yyyyMMdd'T'HHmmss'Z'", CultureInfo.CurrentCulture);
var newDT = TimeZoneInfo.ConvertTimeFromUtc(dt, TimeZoneInfo.FindSystemTimeZoneById("Middle East Standard Time"));
Console.WriteLine(newDT);

实例:http://rextester.com/RQGOC94507