我有日期/时间格式,例如: " 1-Mar-13 92230" 根据{{3}}和this document,格式如下: " d-MMM-yy Hmmss",因为:
Day is single digit, 1-30
Month is 3 letter abbreviation, Jan/Mar etc.
Year is 2 digits, eg 12/13
Hour is single digit for 24 hour clock, eg 9, 13 etc. (no 09)
Minute is standard (eg 01, 52)
Second is standard (eg 30, 02)
我试图在我的程序中运行以下代码,但是我一直收到错误#34; String未被识别为有效的DateTime。"
string input = "1-Mar-13 92330";
var date = DateTime.ParseExact(input, "d-MMM-yy Hmmss",
System.Globalization.CultureInfo.CurrentCulture);
请帮忙,我对DateTime转换不太熟悉,但我无法看到我在这里出错的地方。谢谢!
更新:这是因为在没有冒号的情况下无法解析时间吗? (例如1-Mar-13 9:22:30被解析,但我有一个外部数据源,无法从Hmmss重写为H:mm:ss)
答案 0 :(得分:4)
您可以修改日期:
var parts = "1-Mar-13 92230".Split(' ');
if (parts[1].Length == 5)
{
parts[1] = "0" + parts[1];
}
var newDate = parts[0] + " " + parts[1];
var date = DateTime.ParseExact(newDate, "d-MMM-yy HHmmss", System.Globalization.CultureInfo.CurrentCulture);
答案 1 :(得分:3)
来自msdn:
如果format是自定义格式模式,不包含日期或 时间分隔符(例如“yyyyMMdd HHmm”),使用不变的文化 提供者参数和每种自定义格式的最宽格式 符。例如,如果要以格式指定小时数 模式,指定更宽的形式,“HH”,而不是更窄的形式, “H”。
所以你可以尝试:
string input = "1-Mar-13 92330";
var date = DateTime.ParseExact(input, "d-MMM-yy Hmmss",
System.Globalization.CultureInfo.InvariantCulture);
答案 2 :(得分:1)
您的输入字符串必须是以下格式
string input = "1-Mar-13 092330";
如果你回到你的链接,它会说
H 24-hour clock hour (e.g. 19)
现在H是24小时,它应该以前导0表示。如果不能想象你将如何处理小于9的小时数,即两位数。
如果不是,你的小时和分钟和秒必须分开。
string input = "1-Mar-13 9 2330";
var date = DateTime.ParseExact(input, "d-MMM-yy H mmss",
System.Globalization.CultureInfo.InvariantCulture);
答案 3 :(得分:0)
你的小时分和秒需要分开,因为它们没有被区分。
string input = "1-Mar-13 9 23 30";
var date = DateTime.ParseExact(input, "d-MMM-yy H mm ss", System.Globalization.CultureInfo.CurrentCulture);