1

这是我从 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.

4

5 回答 5

6

您的数字,看起来像自(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));
于 2013-11-06T16:37:02.043 回答
2

首先,您的数据不是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);
于 2013-11-06T16:37:42.117 回答
1

这看起来像一个 Unix(过去纪元的秒数​​)时间戳:

你需要这样的东西

var dateTime = new DateTime(1970,1,1,0,0,0,0);
dateTime = dateTime .AddSeconds( unixTime ).ToLocalTime();
于 2013-11-06T16:37:09.143 回答
0

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

于 2013-11-06T16:37:57.480 回答
0

试试这个:

new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(long.Parse((string)item.created_time));
于 2013-11-06T16:38:18.870 回答