[英]C# Convert date from xml (which can vary format by locality) to DateTime datatype
我需要從xml文檔中以長(yyyy-MM-dd HH:mm:ss)和短(yyyy-MM-dd)格式從xml中提取日期時間。 日期格式可能會因地區而異,例如MM / dd / yyyy與yyyy-mm-dd。
該應用程序在每個地區運行,因此會知道本地化是什么。
問題:1.如何使用本地日期格式從xml節點內部文本中提取日期2.假設我可能不知道xml節點中提供了哪種格式,請使用長格式或短格式提取日期
您可能對DateTime.TryParseExact
或DateTime.ParseExact
方法感興趣。 然后創建一組允許的格式字符串,並循環遍歷此組,以首先測試從最特定的格式解析日期:
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,如下所述:
如果不使用標准格式,則類似格式之間可能存在沖突,例如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]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.