我有一个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文件的字段。
答案 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));