0

以下の 2 つの JSON 値 (created、udated) は、ある種のタイムスタンプです。プロバイダー (Edmunds API) は、「タイムスタンプ」以外は何も指定しませんでした。標準の UNIX 変換を .Net Datetime に試みましたが、何も機能しません。

「作成」: 1380292641721、「更新」: 1380312585558

次の 2 つの方法は機能しませんでした。

 internal DateTime ConvertUnixEpochTime(long epoch)
    {
        long baseTicks = 621355968000000000;
        long tickResolution = 10000000;

        //long epoch = 1225815911;

        long epochTicks = (epoch * tickResolution) + baseTicks;
        return new DateTime(epochTicks, DateTimeKind.Utc);
    }

    public DateTime UnixTimeStampToDateTime(long 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;
    }

助言がありますか?

4

2 に答える 2

4

現在のコードは、値が秒単位であると想定していますが、Unix エポックからはミリ秒単位のように見えます。あなたが望んでいるのは:

private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0,
                                                          DateTimeKind.Utc);

...

DateTime dateTime = UnixEpoch.AddMilliseconds(value);

またはNoda Timeを使用:

Instant instant = Instant.FromMillisecondsSinceUnixEpoch(value);
于 2013-09-30T20:34:05.863 に答える