代码之家  ›  专栏  ›  技术社区  ›  Robin

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

  •  1
  • Robin  · 技术社区  · 6 年前

    我试过各种格式,但似乎没有效果。字符串是:

    2018年06月04日09: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 回复  |  直到 6 年前
        1
  •  5
  •   bommelding    6 年前

    您可以手动选择格式:

    DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss:fffZ", CultureInfo.InvariantCulture);
    

    我以为有一个标准的模式但是 我找不到一个中间有“T”的 正如juharr指出的,输入的数据不是标准格式。所以它必须是自定义格式。

        2
  •  -5
  •   Jan Dudek    6 年前

    既然你有一根绳子,我就试着用最简单的方法:

    特定部分的长度,如年份(2018=>4个字符)不变,

    所以您可以使用两个子字符串方法将整个日期剪切为pasrt( https://msdn.microsoft.com/pl-pl/library/system.string.substring(v=vs.110).aspx )

    我知道这看起来有点蠢,但只要有用…