2017-03-27 14 views
0

私はサーバーにいくつかのメタデータを送信する古いデバイスで動作します。私はUTCの日付時刻を操作する必要があります。私はまた、デバイスがPOSIX形式であるところのタイムゾーン情報を取得します。ベルリンのために:POSIXからOlson/IANAタイムゾーン形式への変換

CET-1CEST,M3.5.0/2,M10.5.0/3

しかし、この形式はpytz

のような人気のライブラリでサポートされていないようですそこで私は、私は単純になりオルソン形式にこれを変換するだろうと思った:Europe/Berlin

しかし、私はPOSIX形式をOlson形式に変換する方法を見つけることができません(これは一般的なものだと思っており、よくサポートされていました)。あなたはどうしますか?

答えて

1

POSIXからOlsonに変換することはできません。

POSIX文字列は、オフセット、略語、およびトランジションをエンコードするための形式です。それらは、単一の「標準時間」オフセット、オプションの単一の「夏時間」オフセット、およびそれらの間の1組の遷移のみを表すことができます。

オルソン文字列(別名IANA、tzdb、tzinfoなど)は、識別子です。彼らは、tzデータのZoneまたはLinkエントリを参照しています。各ゾーンには、任意の数のオフセットとトランジションを含めることができます(Ruleエントリを使用)。これにより、タイムゾーンが時間とともにどのように変化するかを真に表現することができます。

指定されたOlsonタイムゾーンと特定の時点(たとえば "now")にPOSIX文字列を投影できますが、その逆はできません。

あなたが与えた例では、Europe/Berlinと与えられているので、あなたが示したような現行のPOSIX文字列を計算することができました。しかし、正確な同じ文字列は、Europe/Parisと時間の経過と共に独自の変更があるいくつかの他の異なるタイムゾーンで計算されます。それらを区別する方法はありません。

+0

また、POSIXタイムゾーン文字列が厳しい要件の場合、1)制限事項を理解し、2)それらのためのライブラリまたはプラットフォームのサポートを探します。 –

+0

あなたの詳細な再生をありがとう。私たちはPythonを排他的に使用していますが、POSIX形式のサポートはないようです。私は、TZをさまざまな方法で入手しようとするか、私の使用法が非常に単純なので、この形式を操作するための小さなスクリプトを書くかのどちらかと思っています。 – chhantyal

+0

おそらく[こちら](https://pypi.python.org/pypi/PosixTimeZone)を試してみませんか?この例ではOlson IDを示していますが、OSへのパススルーであれば、理論上POSIX文字列でも機能します。 –

関連する問題