お気に入りのモジュールを自由に追加してください。ただし、PEP-431 はまだ実装されていないため、タイムゾーンとそれに関連する奇妙さを処理する統一された具体的な方法が得られたため、これまでのところ、、、、、および対処time
する必要があります。夏時間の切り替え中に 2 回発生する、またはまったく発生しないあいまいな日時のように。とにかく、私の質問はかなり平凡ですが、答えが見つからないようです。datetime
dateutil
pytz
locale
バックストーリー: Sublime Text用の小さなプラグインを開発しています。これにより、最初はユーザーが現在のドキュメントに (指定した形式で、デフォルトにフォールバックして) タイムスタンプを挿入できるようになります。最終的には保存時にタイムスタンプが更新されますが、ここでは関係ありません。これが私の短い自己完結型のコード例です:
import sublime_plugin
from datetime import datetime as dt
class TimeStampCommand(sublime_plugin.TextCommand):
def run(self, edit):
stamp = dt.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC") # 2013-10-10 22:38:40 UTC
for r in self.view.sel():
if r.empty():
self.view.insert(edit, r.a, stamp)
else:
self.view.replace(edit, r, stamp)
フォーマット オプションのリストから%Z
、ローカル タイムゾーンを追加して取得できるはずです。
stamp = dt.now().strftime("%Y-%m-%d %H:%M:%S %Z") # should be 2013-10-10 18:38:40 EDT
または、少し変更して、よりユニバーサルな UTC オフセットを取得します。
stamp = dt.now().strftime("%Y-%m-%d %H:%M:%S UTC %z") # should be 2013-10-10 18:38:40 UTC -0400
残念ながら、これは当てはまりません。なぜなら、 によって返される時刻dt.now()
は「ナイーブ」であり、タイムゾーン情報が関連付けられていないためです。を使用することもできますdatetime.tzinfo
が、これは抽象的な基本クラスにすぎません。だから、私の質問の根底に:「認識できる」オブジェクトを作成するにはどうすればよいですか // /のtime
完全な配列を利用できますdatetime
dateutil
whatever
strftime()
フォーマットオプション?ユーザーが自分のロケールに従って (何らかの形でこれを検出する必要があります)、または提供されたロケールに従って、好きなようにタイムスタンプをフォーマットできるようにしたいと考えています。できれば、Windows、Mac、および Linux (Sublime Text がサポートするプラットフォーム) で動作することを望みます。最後に、Python 2.6 と 3.3 (それぞれ、ST2 と ST3 の組み込みインタープリターのバージョン) に違いがある場合は、それらについて知りたいです。
私はあなたにすべてのコードを書くように頼んでいるわけではないことに注意してください。私はこれを自分で学びたいのです。私は一日のほとんどを車輪を回転させてきたので、正しい方向に進むためにいくつかの良い指針が必要です. 最低限、生成方法を理解する2013-10-10 18:38:40 UTC -0400
ことは素晴らしいスタートになるでしょうが、他のものも本当に素晴らしいでしょう:)