将字符串(UTC)转换为DateTime(EST)

时间:2016-12-27 14:18:06

标签: c# .net

我需要将值转换为C#DateTime。

数据如下所示:

20161021-12:55:16.000

20161021-13:22:09.974

我试过

 String dtTime = "20161021-13:22:09.974";
 dtTime = dtTime.Replace("-"," ");

 DateTime outPut = Convert.ToDateTime(dtTime);

它会引发错误。

我可以获得帮助将这些样本转换为有效的日期时间吗?

这些值也是UTC。

我需要将它们转换为EST。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您需要使用具有特定格式的DateTime.ParseExact。

看看这个:https://msdn.microsoft.com/es-es/library/w2sa9yss(v=vs.110).aspx

对于东部时间转换,尝试这样的事情(将DateTime.Now替换为您的日期):

var timeUtc = DateTime.UtcNow;
TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime easternTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, easternZone);

答案 1 :(得分:0)

我会使用TryParseExact:

String dtTime = "20161021-13:22:09.974";

DateTime outPut;
if (DateTime.TryParseExact(dtTime, "yyyyMMdd-HH:mm:ss.fff", null, DateTimeStyles.None, out outPut))
{
    var est = TimeZoneInfo.ConvertTimeFromUtc(outPut,
                            TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
    Console.WriteLine(est);
}