我无法解析这个日期,怎么了?
"Jul 15 2015 16: +0"
+0是UTC添加的时间,我想以秒为单位得到时间。
UTCConsole.WriteLine("Date: {0}",
DateTime.ParseExact("Jul 15 2015 16: +0",
"MMM dd yyyy HH", CultureInfo.InvariantCulture).ToString("MMM dd, yyyy"));
错误:字符串未被识别为有效的日期时间
完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Globalization;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string json = "{"success":true,"price_prefix":"","price_suffix":" pСѓР±.","prices":[["Jul 15 2015 16: +0",1.745,"6"],["Jul 15 2015 17: +0",1.78,"5"],["Jul 15 2015 18: +0",1.65,"7"]]}";
var prices = JObject.Parse(json)["prices"].Children()
.Select(j => new PriceItem
{
Date = (string)j[0],
Price = (float)j[1],
Count = (int)j[2]
});
foreach (PriceItem priceItem in prices)
{
Console.WriteLine("Date: {0}", DateTime.ParseExact(priceItem.Date, "MMM dd yyyy HH", CultureInfo.InvariantCulture).ToString("MMM dd, yyyy"));
Console.WriteLine("Price: {0}", priceItem.Price);
Console.WriteLine("Count: {0}", priceItem.Count);
Console.WriteLine(new string('-', 10));
}
Console.ReadKey(true);
}
}
class PriceItem
{
public string Date { get; set; }
public float Price { get; set; }
public int Count { get; set; }
}
}
DateTime.ParseExact
就是这样做的,它完全解析输入数据。如果输入数据不匹配,它将抛出异常(尽管有一个名为DateTime.TryParseExact
的类似函数不会抛出异常)。
您的输入数据是Jul 15 2015 16: +0
,其中包括时区和分隔符。您希望创建一个与它完全匹配的格式字符串,因此需要使用MMM dd yyyy HH':' z
。冒号位于'标记内部,因为它被解析器解释为时间分隔符,因此您需要告诉格式化程序从输入字符串中"将其作为文字复制"。
你的代码变成:
Console.WriteLine("Date: {0}",
DateTime.ParseExact("Jul 15 2015 16: +0",
"MMM dd yyyy HH':' z", CultureInfo.InvariantCulture).ToString("MMM dd, yyyy"));
这应该可以。
请参阅自定义日期时间格式字符串(MSDN)了解更多信息。