在C#中将字符串转换为DateTime

时间:2014-05-18 10:54:37

标签: c# datetime

我正在尝试将字符串转换为DateTime几个小时, 字符串看起来像这样

"20140519-140324"我知道它在UTC

我已经尝试了这个

DateTime ourDateTime;
bool success = DateTime.TryParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out ourDateTime);
StartTime.Text = ourDateTime.ToString("g");

和这个

DateTime ourDateTime= DateTime.ParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
StartTime.Text = ourDateTime.ToString("g");

但这些都不起作用。我做得不好?

2 个答案:

答案 0 :(得分:5)

来自DateTime.TryParseExact method

  

将指定的日期和时间字符串表示形式转换为它   DateTime等效。 字符串表示的格式必须   完全匹配指定的格式。

在你的例子中,他们不是。使用yyyyMMdd-HHmmss自定义格式,而不是与您的字符串完全匹配。

这是LINQPad;

的示例
string s = "20140519-140324";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyyMMdd-HHmmss", CultureInfo.InvariantCulture,
                          DateTimeStyles.AdjustToUniversal, out dt))
{
    dt.Dump();
}

这里有 demonstration

由于同样的原因,您的DateTime.ParseExact示例也不起作用。

了解更多信息;

答案 1 :(得分:1)

您在TryParseExact方法中使用了错误的格式。 format参数应该是输入字符串格式的指示符。 因此你需要这样做:

DateTime ourDateTime;
bool success = DateTime.TryParseExact(Date, "yyyyMMdd-HHmmss", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out ourDateTime);
if(success) {
    StartTime.Text = ourDateTime.ToString("g");
}