簡體   English   中英

C#將日期從xml(可以隨地區而異的格式)轉換為DateTime數據類型

[英]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.TryParseExactDateTime.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,如下所述:

XML文件中用於日期/時間的正確格式是什么

如果不使用標准格式,則類似格式之間可能存在沖突,例如dd/MM/yyyyMM/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.

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