gpt4 book ai didi

c# - 另一个字符串未被识别为有效的日期时间和 XML 元素

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:00 25 4
gpt4 key购买 nike

我有一个 XML 元素,其中包含以下 DATE 格式的数据(XML 数据来自第三方网络服务,因此我无法控制返回的数据)

1/12/2012 and
2012

我遇到了错误

字符串未被识别为有效的日期时间

所以我四处阅读并尝试(我的 C# 不如 VB .Net 高效)

DateOfBirth = DateTime.TryParse(c.Element(ns + "date-span").Elements(ns + "begin").Any() ? c.Element(ns + "date-span").Element(ns + "begin").Value : DateTime.Now.ToString(), DateTime.Now.ToString());

但无论我尝试什么,我要么得到语法错误,要么无法识别字符串。

我的 SQL 数据库中 DateOfBirth 的类型是 Datetime - 但将其更改为 NVARCHAR 可以解决问题,但这意味着我无法将其存储为有效的日期时间格式以在数据进入数据库后执行日期时间操作。

有没有办法克服上述错误或将 2012 格式化为 01/01/2012?或者唯一的方法是将它存储为 NVARCHAR,然后在我需要在已保存的日期上执行操作时使用 Convert.ToDateTime(valueFromDatabase)?

编辑 1

GetCustomers = from c in XDoc.Descendants(ns + "customer")
select
new Customer
{
Name = c.Element(ns + "name").Value,
DateOfBirth = Convert.ToDateTime(aa.Element(ns + "date-span").Elements(ns + "begin").Any() ? aa.Element(ns + "date-span").Element(ns + "begin").Value : DateTime.Now.ToString())
};

编辑 2

var xml = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>
<metadata created=""2014-11-03T18:13:02.769Z"" xmlns=""http://example.com/ns/mmd-2.0#"" xmlns:ext=""http://example.com/ns/ext#-2.0"">
<customer-list count=""112"" offset=""0"">
<customer id=""5f6ab597-f57a-40da-be9e-adad48708203"" type=""Person"" ext:score=""100"">
<name>Bobby Smith</name>
<gender>male</gender>
<country>US</country>
<date-span>
<begin>1965-02-18</begin>
<end>false</end>
</date-span>
</customer>
<customer id=""22"" type=""Person"" ext:score=""100"">
<name>Tina Smith</name>
<gender>Female</gender>
<country>US</country>
<date-span>
<end>false</end>
</date-span>
</customer>
<customer id=""30"" type=""Person"" ext:score=""500"">
<name>George</name>
<gender>Male</gender>
<country>US</country>
<date-span>
<begin>1965</begin>
<end>false</end>
</date-span>
</customer>
</customer-list>
</metadata>";

最佳答案

,看起来像 DateTime.TryParseExact overload这需要 string[]作为一种格式可以是一种解决方案;

string s = "";
string[] format = new [] {"yyyy", "d/MM/yyyy"};
DateTime date;
if(DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture,
DateTimeStyles.None, out date))
{
// Successfull parsing for 2012 and 1/12/2012
}

我假设您的第一个数字是天数。如果不是,您可以添加 MM/d/yyyy在你的字符串数组中格式化。如果您的日期和月份部分有单个数字的前导零(如 01/01/2012 ),您还需要 dd/MM/yyyy格式也是如此。

关于c# - 另一个字符串未被识别为有效的日期时间和 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26936649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com