我正在尝试将字符串转换为日期时间几个小时了,字符串看起来像这样
"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");
和this
DateTime ourDateTime= DateTime.ParseExact(Date, "yyyy-MM-dd-HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
StartTime.Text = ourDateTime.ToString("g");
但是这些都不起作用。我做错了什么?
From 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();
}
这里a demonstration
。
你的DateTime.ParseExact
的例子也不会工作,因为同样的原因。
查看更多信息;
- 自定义日期和时间格式字符串
您在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");
}