如何将此字符串转换为日期时间

时间:2018-06-04 11:46:28

标签: c# datetime format

我尝试过各种格式但似乎没什么用。字符串是:

  

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;
                    }
                }
            }

2 个答案:

答案 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。

我知道它看起来有点愚蠢,但只要它有效......