在此代码中item.date_time
看起来像“2017-10-18T04:57:39.000Z”。当我把这个(或任何其他类似的字符串),而不是item.date_time
- 它运作良好。但是,尽管item.date_time
等于这样的字符串 - 当我使用它时会调用System.FormatException。为什么datetime不能识别字符串?
static void Main(string[] args)
{
eventList = new List<CsvFile>();
StreamReader sr = new StreamReader("logs.csv");
string data = sr.ReadLine();
while (data != null)
{
string[] line = data.Split(',');
ReadString(line);
data = sr.ReadLine();
}
}
class CsvFile
{
public String date_time;
public DateTime datetime;
}
static void ReadString(String[] str)
{
CsvFile item = new CsvFile();
item.date_time = str[0];
item.datetime = DateTime.ParseExact(item.date_time, "yyyy-MM-ddTHH:mm:ss.000Z", CultureInfo.InvariantCulture);
eventList.Add(item);
}
我今天经历了几十个有关日期时间问题的问题和答案,但发现什么都不能解决这个奇怪的事情。任何想法我的代码有什么问题?
显然有一个值不符合您预期的日期时间格式模式。使用调试器来确定它是什么。也许有一个空行或者你有空格或编码是不同的或有一个隐藏的字符....唯一可以弄清楚的是你,你有权访问它失败的值,而我们不(*因为你没有在你的问题中包含它们) – Igor
你绝对确定这些字符串是相同的吗? 'item.date_time'是否有引号或转义字符?将它们打印到控制台。 – Blorgbeard
或者使用'DateTime.TryParseExact',并且如果它返回false,则将*只是*值打印到控制台。 –