簡體   English   中英

為什么datetime無法識別字符串?

[英]Why datetime can't recognise the string?

在此代碼中, item.date_time看起來像“ 2017-10-18T04:57:39.000Z”。 當我把它(或任何其他類似的字符串)代替item.date_time -它工作得很好。 但是,盡管item.date_time等於這樣的字符串-當我使用它時,它會調用System.FormatException。

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);
    }

今天,我經歷了許多有關日期時間問題的問答,但發現沒有什么可以解決這個奇怪的問題。 任何想法我的代碼有什么問題嗎?

str [0]等於"\\"2017-10-18T04:57:39.000Z\\""

您的字符串用引號引起來(因此使用\\"指示符)。在解析之前將其刪除:

    item.date_time = str[0].Trim('"');
    item.datetime = DateTime.ParseExact(item.date_time, "yyyy-MM-ddTHH:mm:ss.000Z", CultureInfo.InvariantCulture);

您可能考慮使用TryParseExact以便可以確定解析是否成功並顯示更好的錯誤消息(例如您在哪個記錄上,輸入值是什么等),而不是引發異常。

另一種選擇是使用CSV解析庫,該庫可以為您處理值周圍的引號和日期/時間解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM