日期时间解析c#



我无法解析这个日期,怎么了?

 "Jul 15 2015 16: +0" 

+0是UTC添加的时间,我想以秒为单位得到时间。

UTC

Console.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)了解更多信息。

相关内容

  • 没有找到相关文章

最新更新