这是我从 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.
您的数字,看起来像自(Unix 纪元)1383734307
以来经过的秒数,您可以执行以下操作来获取1970/01/01
DateTime
DateTime dt = new DateTime(1970, 1, 1).AddSeconds(1383734307);
这将返回:dt = {06/11/2013 10:38:27 AM}
目前您用于解析 DateTime 的格式无效。
对于您的情况,它似乎created_time
是 type 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));
首先,您的数据不是DateTime
,而是时间戳。所以检查这个问题如何从中DateTime
得出:如何将 UNIX 时间戳转换为日期时间,反之亦然?.
对于 c#,它将是:
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;
}
然后,您可以使用方法从您的实例生成与您的格式匹配的数据时间ToString
字符串:DateTime
var dateString = myDateTime.ToString("ddd MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture);
这看起来像一个 Unix(过去纪元的秒数)时间戳:
你需要这样的东西
var dateTime = new DateTime(1970,1,1,0,0,0,0);
dateTime = dateTime .AddSeconds( unixTime ).ToLocalTime();
您需要在 C# 中将纪元时间转换为 DateTime,使用代码检查此答案以进行转换: https ://stackoverflow.com/a/2883645/892290
试试这个:
new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(long.Parse((string)item.created_time));