我需要從xml中提取日期時間(yyyy-MM-dd HH:mm:ss)和short(yyyy-MM-dd)格式從一個XML文檔。日期格式可能因地區而異。 MM/dd/yyyy vs yyyy-mm-dd。C#將日期從xml轉換爲DateTime數據類型
該應用程序在每個地區運行,因此將知道本地化是什麼。
問:如何用無論是本地日期格式 2.提取使用長或短格式的日期,因爲我可能不知道已經在提供了做我從XML節點內部文本 1.提取日期xml節點
我需要從xml中提取日期時間(yyyy-MM-dd HH:mm:ss)和short(yyyy-MM-dd)格式從一個XML文檔。日期格式可能因地區而異。 MM/dd/yyyy vs yyyy-mm-dd。C#將日期從xml轉換爲DateTime數據類型
該應用程序在每個地區運行,因此將知道本地化是什麼。
問:如何用無論是本地日期格式 2.提取使用長或短格式的日期,因爲我可能不知道已經在提供了做我從XML節點內部文本 1.提取日期xml節點
您可能感興趣的方法DateTime.TryParseExact
或DateTime.ParseExact
。然後創建一個組允許的格式字符串和循環throuh這套測試首先從最具體的格式解析日期:
var formats = new List<string>();
formats.Add("yyyy-MM-dd HH:mm:ss");
formats.Add("yyyy-MM-dd");
formats.Add("MM/dd/yyyy");
formats.Add("yyyy-mm-dd");
DateTime parsedDate;
foreach(var format in formats)
{
if (DateTime.TryParseDate(str, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate))
{
break;
}
}
編輯:正確的格式是如下描述ISO 8601:
What is the correct format to use for Date/Time in an XML file
如果不使用標準格式,則可能在相似格式之間存在衝突,例如在dd/MM/yyyy
和MM/dd/yyyy
之間,這些格式在某些地區都是有效的。
謝謝,這看起來很有趣......唯一的問題是,我會需要包括世界各地使用的主要格式... –
*當且僅當*數據和客戶端使用相同的語言環境時,使用簡單的'DateTime.Parse'就足夠了,因爲它將使用客戶端的語言環境。不需要'ParseExact'。所有解析函數還接受CultureInfo參數,該參數是指定區域設置的一種比實際手動編碼格式更安全的方法 –
XML不使用ISO格式。因此我的問題。我希望能夠使用能夠建立本地格式,然後指出日期是在dd/MM/yyyy或MM/dd/yyyy ...編輯:數據和客戶端將在同一臺機器上,所以相同的語言環境。 –
正如Panagiotis Kanavos所建議的,xml中的日期應該是ISO8601格式。這裏有一個例子:
string xmlInput = @"
<root>
<element>
<timestamp time='2016-09-15T13:45:30'>
</timestamp>
</element>
<element>
<timestamp time='2016-10-16T13:45:30'>
</timestamp>
</element>
</root>";
XDocument xdoc = XDocument.Parse(xmlInput);
var listOfDates = xdoc.Descendants("root").Elements("element").Select(x => DateTime.Parse(x.Element("timestamp").Attribute("time").Value,CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)).ToList<DateTime>();
Console.WriteLine(listOfDates[0]);
請注意,我已經提供了問題中的日期格式。 –
你是什麼意思? XML數據包含具有「MM/dd/yyyy」值的文本字段? 'xs:date'和'xs:dateTime'類型使用ISO8601格式,因此您應該修復生成XML文件的代碼。 .NET的DateTime對象沒有格式,所以你不必處理本地化,直到你將值呈現爲一個字符串,例如用於顯示 –
換句話說,XML中的特定於語言環境的日期字符串是必須手動的錯誤編碼,因爲.NET會正確序列化日期 –
我不生成XML - 我明白了。我想提取日期,將它們加載到日期時間選擇器中,以允許用戶使用新日期更新日期,然後將它們保存爲原來返回到xml中的格式。 –