解析精确格式无效
本文关键字:格式 无效 | 更新日期: 2023-09-27 18:10:02
我需要解析字符串并将其转换为DateTime。我有以下代码片段:
using (StreamReader reader = new StreamReader(fichier))
{
while ((item = reader.ReadLine()) != null)
{
string[] table = item.Split(''t');
string _date = table[2];
pointages.Add(DateTime.ParseExact(_date,"yyyy-MM-dd-hh:mm:ss", CultureInfo.InvariantCulture,DateTimeStyles.None));
}
}
Edit2
文件的内容:
917 2014-06-24-07:43:47 Finger
字符串_date =2014-06-24-07:43:47
。当我执行程序时,我得到了这个异常:String was not recognized as a valid DateTime.
编辑
当我像这样添加一行时:
while ((item = reader.ReadLine()) != null)
{
string[] table = item.Split(''t');
string _date = table[2];
_date ="2014-06-24-07:43:47";
pointages.Add(DateTime.ParseExact(_date,"yyyy-MM-dd-hh:mm:ss", CultureInfo.InvariantCulture,DateTimeStyles.None));
}
它! !
- 这个错误的原因是什么?
- 我该如何修复它?
您的示例字符串为我工作,所以它必须是一个不同的字符串。使用调试器。也许它实际上是像17:43:47
一样使用24小时时钟,那么你需要HH
而不是hh
。
你:不,这真的是我贴出来的字符串。
这是不可能的。也许它有前后空格,先用Trim
:
_date = _date.Trim();
Trim
不仅删除空格,而且删除属于SpaceSeparator
、LineSeparator
或ParagraphSeparator
类别的所有字符。所以可能是账单什么的。请看String.Trim
使用的Char.IsWhiteSpace
的注释部分。
旁注:如果你不知道格式是否有效,你可以使用DateTime.TryParseExact
代替,它不会引发异常,但如果字符串无法解析为DateTime
,则返回false
:
bool couldBeParsed = DateTime.TryParseExact(
_date.Trim(),
"yyyy-MM-dd-HH:mm:ss",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt);