如何将具有多个日期的字符串解析为List <DateTme>?

时间:2019-12-20 10:44:17

标签: c# json datetime arraylist

我有一个string,看起来像这样: [12-20-2019 11:27:57, 12-20-2019 11:27:58, 12-20-2019 11:27:59]每个日期都由,分隔,如何将其解析为List<DateTime>

我的代码是:

string datesListString = JObject.Parse(jsonContent)["datesList"].ToString();
ListDateTime> datesList = new JavaScriptSerializer().Deserialize<List<DateTime>>(datesListString);

DatesListString是我需要反序列化的大JSON文件的字段。

5 个答案:

答案 0 :(得分:3)

您可以轻松完成

var dateString = "12-20-2019 11:27:57, 12-20-2019 11:27:58, 12-20-2019 11:27:59";
var result = dateString.Split(",").Select(_ => DateTime.Parse(_, CultureInfo.InvariantCulture));

要跳过方括号,您只需使用Trim方法即可,

var dateString = "[12-20-2019 11:27:57, 12-20-2019 11:27:58, 12-20-2019 11:27:59]".Trim('[', ']');

答案 1 :(得分:3)

string yourString = "[12-20-2019 11:27:57, 12-20-2019 11:27:58, 12-20-2019 11:27:59]";    
List<DateTime> dates = yourstring
    .Trim('[', ']')
    .Split(new[] { ", " }, StringSplitOptions.None)
    .Select(s => DateTime.ParseExact(s, "MM-dd-yyyy hh:mm:ss", null))
    .ToList();

答案 2 :(得分:1)

您可以尝试:

string dateTimes = "12-20-2019 11:27:57, 12-20-2019 11:27:58, 12-20-2019 11:27:59";
string[] splitDateTime = dateTimes.Split(',');
List<DateTime> dates = new List<DateTime>();
foreach (string dateTime in splitDateTime)
{
    DateTime date;
    if (DateTime.TryParseExact(dateTime, "MM-dd-yyyy hh:mm:ss", 
                               CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
      dates.Add(date);
}

答案 3 :(得分:0)

您需要先分割字符串,然后才能使用DateTime.Parse(str)获取DateTime对象。

这证明了这一点:

using System;

public class Program
{
    public static void Main()
    {
        string str = "[12-20-2019 11:27:57, 12-20-2019 11:27:58, 12-20-2019 11:27:59]";
        str = str.Substring(1, str.Length - 2);
        string[] parts = str.Split(',');

        foreach(var part in parts) {
            str = str.Trim();
            var date = DateTime.Parse(part);
            Console.WriteLine(date);
        }
    }
}

答案 4 :(得分:0)

它看起来像是JSON:

var _str = @"[""12-20-2019 11:27:57"", ""12-20-2019 11:27:58"", ""12-20-2019   11:27:59""]";

因此我们可以使用using Newtonsoft.Json;

using Newtonsoft.Json;

var list = JsonConvert.DeserializeObject<List<string>>(_str)
    .Select(s => DateTime.Parse(s, CultureInfo.InvariantCulture));

Read mode about library Json.NET