2016-12-30 28 views
2

Pythonで '/ Date(-62135596800000)/'のような時刻をどのように解析するのですか?Pythonでこの '/Date(-62135596800000) /'のような時刻を解析する方法

私はインターネットを検索しましたが、解決策を見つけることができませんでした。

リンク:http://211.137.19.74:8089/Ajax/GetStationDetailList?cityName=%E6%B2%88%E9%98%B3

時点: "/日(-62135596800000)/" と時間は2016でなければなりません:12:31:1時

+1

は何日その数は表すことになっていますか?おそらく "Unixの時代の62兆秒前"ではないだろうか、私は推測している。 – Kevin

+0

@ケビン...それは古生物学者にとっては普通のことです! – tdelaney

+0

この日付文字列がどこから来たのかわかりますか? – tdelaney

答えて

1

のPython 3.xの がどのように見える
を使用してエポック時間(1970年1月1日00:00:00 GMTから開始するナノ秒)。

from datetime import datetime 
dt = datetime.fromtimestamp(62135596800000 // 1000000000) 
print(dt) 

はあなたが取得している値については、あなたが負のエポックタイムスタンプ(-62135596800000無効になります)を持つことができません:あなたはこのようなものを使用することができます。 - が負の場合は、別のタイムスタンプ形式である可能性があります。

+1

ナノ秒ではなく、ミリ秒であり、はいです。絶対的に負のエポックタイムスタンプを持つことができます。Unixエポックは '1970-01-01T00:00:00Z'です。あなたは1969年以前にネガを得るでしょう。 –

+1

@MattJohnsonああ申し訳ありませんが、私はそれを認識しませんでした。 datetime.fromtimestamp関数は、負の値を使用したときにエラーをスローします。 Pythonは何らかの理由でデフォルトで日付範囲を制限しています。 「これは1970年から2038年の間に限られているのが一般的だ」 - [docs](https://docs.python.org/3/library/datetime.html) –

+1

興味深い...そして[ここ] http://stackoverflow.com/a/17231712/634824)その解決策です。 ;) –

3

/Date(N)/は、通常、.NETの組み込みWCF JSONシリアライザによってシリアル化された日付の形式です。この値は、JavaScriptでnew Date(N)を呼び出して再構成することができます。この日はちょうど間違っている可能性が高い理由は、JavaScriptで表示されますことを実行

:あなたが見ることができるように

new Date(-62135596800000) 
// Date 0001-01-01T00:00:00.000Z 

は、あなたが0001-01-01 00:00:00.00を取得します。そのようにそれを言って申し訳ありませんが、そう

default(DateTime).ToString("u") // 0001-01-01 00:00:00Z 
new DateTime(0).ToString("u") // 0001-01-01 00:00:00Z 

ますが、そのサーバーは、単に壊れている:これはまた、空のDateTimeオブジェクトのための.NETでデフォルト値であることを起こります。

すべてをあなたが有効な日付を得れば、あなたは datetime.fromtimestampdatetime.utcfromtimestampを使用してPythonで数値を解析することができ、言われ

>>> from datetime import datetime 
>>> datetime.fromtimestamp(1483120713887 // 1000) 
datetime.datetime(2016, 12, 30, 18, 58, 33) 
+0

実際には負の数値が有効です。その例を示しただけです。 –

+0

@MattJohnson Nevermind、私は間違っていた。申し訳ありません。 – poke

+0

もちろん、問題ありません。 :) –

関連する問題