这是我从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.
答案 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));