我尝试过各种格式但似乎没什么用。字符串是:
2018-06-04T09:07:30:507Z
我收到的错误是字符串不是正确的日期时间格式,我尝试了一切。我首先发现/认为字符串是ISO 8601格式,但这似乎也是错误的。
我不认为它应该重要,但是我从XML输入中获取此字符串,这是我使用的代码(使用我试图使其工作的最新变体):
foreach (XmlNode node in parentNode)
{
foreach (XmlNode child in node)
{
switch (child.Name)
{
case "ShopId":
advance.ShopId = child.InnerText;
break;
case "CustomerId":
advance.CustomerId = child.InnerText;
break;
case "Reference":
advance.Reference = child.InnerText;
break;
case "Amount":
advance.Amount = decimal.Parse(child.InnerText.Replace('.', ','));
break;
case "DateStart":
advance.DateStart = DateTime.Parse(child.InnerText, null, System.Globalization.DateTimeStyles.RoundtripKind);
break;
case "DateEnd":
advance.DateEnd = DateTime.Parse(child.InnerText);
break;
default:
break;
}
}
}
答案 0 :(得分:5)
您可以手动选择格式:
DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss:fffZ", CultureInfo.InvariantCulture);
我认为有一个标准模式,但我找不到一个接受中间“T”的人正如juharr指出的那样,传入的数据不是标准格式。所以它必须是自定义格式。
答案 1 :(得分:-5)
因为你有一个字符串我会尝试最简单的方法:
特定部分的长度,如年份(2018 => 4个字符)不会改变,
所以你可以使用几个子串方法(https://msdn.microsoft.com/pl-pl/library/system.string.substring(v=vs.110).aspx)将整个日期剪切成paslas。
我知道它看起来有点愚蠢,但只要它有效......