-1

我们在应用程序中为我们的一个模块使用第三方供应商 Web 服务端点由第三方供应商提供。

对于处理发布评论的 Web 服务端点之一,

我们的 ASP.NET C# Web 应用程序将返回一些 JSON 数据。

我正在使用 James Newton-King Json.NET 来处理 JSON 数据。

在我们从第三方供应商的 Web 服务收到的 JSON 数据中,我们得到以下日期,该日期与发布评论的时间相关联:

\"date_created\": 1375206707,\r\n 

因此,我创建了一个 ASP.NET DataContract C# 类,它对应于我们接收的 JSON 数据。

此外,我在 C# 类中有以下 DataMember,它对应于与发表评论关联的创建日期:

[DataMember(Name = "date_created")]
public string CommentCreationDate { get; set; }

请就我应该如何解析以下 JSON 日期格式提出建议

在 ASP.NET C# 世界中(可能还涉及 James Newton-King Json.NET):

\"date_created\": 1375206707,\r\n 
4

3 回答 3

3

您可以通过创建自定义转换器来做到这一点。

string json = @"{""date_created"":1375206707}";

var obj = JsonConvert.DeserializeObject<TempClass>(json,new DateConverter());

public class TempClass
{
    public DateTime date_created;
}

public class DateConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(DateTime);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return new DateTime(1970, 1, 1).AddSeconds((long)reader.Value);
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}
于 2013-08-29T14:45:28.963 回答
0

@I4V 感谢您的帮助。

由于我已经使用 James Newton-King Json.NET 技术将创建日期放置在名为 CommentCreationDate 的基于字符串的 DataMember 中,因此我包含以下 C# 代码来获取 DateTime 值。

CommentCreationUTDate = new DateTime(1970, 1, 1).AddSeconds(Int64.Parse(CommentCreationDate)).ToUniversalTime();

于 2013-08-29T17:48:41.720 回答
-1

//(如何将 Unix 时间戳转换为 DateTime,反之亦然?) //“UTC 不会随着季节的变化而变化,但当地时间或民用时间可能会改变 // 如果时区管辖区遵守夏令时(夏季time). // 例如,UTC 比美国东海岸// 冬季的当地时间早 5 小时(即,比当天晚),但在当地实行夏令时时提前 4 小时。 "

// 下面期望 reader.Value 是一个 Unix TimeStamp

        return (new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Convert.ToDouble(reader.Value)));
于 2013-10-08T15:45:19.347 回答