2011-12-23 11 views
1

RESTエンドポイントからjsonレスポンスを把握しようとすると大きな問題が発生します。情報を取得しています。RESTとjsonを使用したDateTime形式

戻って来ている日は、私はそうのように、この値を変換しようとすると、この1319068800000

次のようになります。

DateTime currentServerTime = DateTime.FromFileTimeUtc(1319068800000); 

私はこの出力を得る:1601年1月2日12時38分26秒PM ...明らかに間違っています:(

私が使用しているRESTエンドポイントには、jsonレスポンスのクールなHTML表示があり、同じ値の形式は次のようになります。2011/10/20 00:00:00 UTC

誰かが私のためにこれについていくつかの光を発することができますか?私はこのREST APIを使用して日付を更新しようとしていると私は、このコード

DateTime.Now.ToFileTimeUtc().ToString(); 

を使用して日付を送信するとき、私は私が有効なを持っていると言って外にAPIのそれ爆弾にこれを送信するとき、私はこの結果129691518811163201を取得し、日付。ありがとう!

答えて

4

@Billと@Christoferの両方が正しいです。ただし、Unixの時刻をDateTimeに変換する必要があります。ここでは、これを行う小さな関数があります:Convert a Unix timestamp to a .NET DateTime

コード(シモーネChiarettaによって)サイトから引用:

static DateTime ConvertFromUnixTimestamp(double timestamp) 
{ 
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
    return origin.AddSeconds(timestamp); 
} 


static double ConvertToUnixTimestamp(DateTime date) 
{ 
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); 
    TimeSpan diff = date - origin; 
    return Math.Floor(diff.TotalSeconds); 
} 
+0

+1変換関数では、私は通常、まったく同じものを自分で使います。 –

3

GMTの1970年1月1日午前12時からのミリ秒数です。これは、通常Javaで使用される内部タイムスタンプ形式です。

user=> (java.util.Date. 1319068800000) 
Date Wed Oct 19 20:00:00 EDT 2011 
+0

私はそれが一般的にUnixの時間やPOSIX時間と呼ばれていると思います。 –

+0

1970年1月1日以降の秒数ですが、Javaはミリ秒です。 – Bill

3

返された数値を1000で除算してからDateTimeに変換することができます。これは、Unix時代からのミリ秒単位で返されるようです。

関連する問題