我有一个看起来像这样的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 文件的一个字段。
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();
您可以通过结合string.Split
方法和Select
来做到这一点System.Linq
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(d => DateTime.Parse(d, CultureInfo.InvariantCulture));
要跳过方括号,您可以简单地使用Trim
方法,如下所示
var dateString = "[12-20-2019 11:27:57, 12-20-2019 11:27:58, 12-20-2019 11:27:59]".Trim('[', ']');
您可以简单地尝试:
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);
}
您需要先拆分字符串,然后可以使用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);
}
}
}
看起来像是 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));
关于库 Json.NET 的阅读模式