我正在尝试将字符串转换为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");
但这些都不起作用。我做得不好?
答案 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");
}