这个DateTime Parser出了什么问题?

时间:2013-11-06 16:32:48

标签: c# .net datetime

这是我从JSON获得的日期:

"created_time": "1383734307"

所以我的代码是:

var myData = DateTime.ParseExact((string)item.created_time, "ddd MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture);

但我得到String was not recognized as a valid DateTime.

5 个答案:

答案 0 :(得分:6)

您的号码1383734307,看起来是自1970/01/01 (Unix Epoch) 以来经过的秒数,您可以执行以下操作来获取DateTime

DateTime dt = new DateTime(1970, 1, 1).AddSeconds(1383734307);

这将返回:dt = {06/11/2013 10:38:27 AM}

目前,用于解析DateTime的格式无效。

对于您的情况,似乎created_time的类型为long/int,因为您要将其转换为字符串,您可以这样做:

DateTime dt = new DateTime(1970, 1, 1).AddSeconds(created_time);

或者您可以将其解析为long,如:

DateTime dt = new DateTime(1970, 1, 1).AddSeconds(Convert.ToInt64(created_time));

答案 1 :(得分:2)

首先,您的数据不是DateTime,而是时间戳。因此,请查看此问题如何从中DateTime生成public static DateTime UnixTimeStampToDateTime( double unixTimeStamp ) { // Unix timestamp is seconds past epoch System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0); dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime(); return dtDateTime; }

对于c#,它将是:

ToString

然后,您可以使用DateTime方法从var dateString = myDateTime.ToString("ddd MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture); 实例生成与您的格式匹配的数据时字符串:

{{1}}

答案 2 :(得分:1)

看起来像是一个Unix(过去几秒钟)时间戳:

你需要这样的东西

var dateTime = new DateTime(1970,1,1,0,0,0,0);
dateTime = dateTime .AddSeconds( unixTime ).ToLocalTime();

答案 3 :(得分:0)

您需要在C#中将纪元时间转换为DateTime,请使用代码检查此答案以进行转换: https://stackoverflow.com/a/2883645/892290

答案 4 :(得分:0)

试试这个:

new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(long.Parse((string)item.created_time));