我真的不明白爲什麼這不想工作。我收到一個例外:將字符串轉換爲日期時間格式 - 格式錯誤
字符串未被識別爲有效的DateTime。
我讀從一個文件中的字符串日期,看起來像這樣2/27/2014 10:10:55
這個方法接收的文件名和推斷,我需要的數據(緯度,經度,年月日)
public void ReadCsvFile(string filename)
{
var reader = new StreamReader(File.OpenRead(filename));
gpsDataList = new List<GpsFileClass>();
while(!reader.EndOfStream){
var line = reader.ReadLine();
var values = line.Split(',');
if(values[2].Contains("A")){
values[2] = values[2].Substring(0,values[2].IndexOf("A"));
values[2].Replace("\"", "");
values[2] = values[2].Trim();
}
if(values[2].Contains("P")){
values[2] = values[2].Substring(0, values[2].IndexOf("P"));
values[2].Replace("\"", "");
values[2] = values[2].Trim();
}
gpsDataList.Add(new GpsFileClass(Convert.ToDouble(values[0]), Convert.ToDouble(values[1]), Convert.ToString(values[2])));
}
}
一旦我有一個列表中的文件數據>我想做一些日期比較和計算。但首先;我儘量包含最新信息DATETIME這樣的字符串數據轉換:
public void SaveFrameGpsCoordinate()
{
int listSize = gpsDataList.Count;
DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
dateTimeFormatInfo.ShortDatePattern = "dd-MM-yyyy HH:mm:ss";
dateTimeFormatInfo.DateSeparator = "/";
//DateTime tempDateA = DateTime.ParseExact(gpsDataList[0].timeCaptured, "dd/MM/yyyy HH:mm:ss",null);
//DateTime tempDateB = DateTime.ParseExact(gpsDataList[lastRecordData].timeCaptured, "dd/MM/yyyy HH:mm:ss", null);
DateTime tempDateA = Convert.ToDateTime(gpsDataList[0].timeCaptured.Replace("\"", ""), System.Globalization.CultureInfo.GetCultureInfo("hi-IN").DateTimeFormat);
DateTime tempDateB = Convert.ToDateTime(gpsDataList[lastRecordData].timeCaptured.Replace("\"", ""), System.Globalization.CultureInfo.GetCultureInfo("hi-IN").DateTimeFormat);
}
正如你可以看到,即使ParseExact拋出同樣的異常,我想它(因此評論說出來)。
這種問題有很多解決方案,但似乎沒有在我的工作。我得到該DateTime默認情況下使用en-US calture。但是當我甚至當我把文化改變成「af-ZA」時,我也會得到同樣的例外。
請幫忙。
tldr;但2/27/2014是M-dd-yyyy,而不是dd-MM-yyyy – franssu
正如旁白一樣,默認情況下DateTime不使用en-US,但使用機器設置的當前UI文化。 –
好的,謝謝你的信息。 :) – Tumelo