別のタイムゾーンで「日付」出力時間を作成するには?

別のタイムゾーンで「日付」出力時間を作成するには?

タイムゾーンをに設定して実行中のサーバーがありますUTC。これは一般的に良い習慣のようです(間違っている場合は訂正してください)。

とにかく、ファイルのためにscp私が接続しているサーバーの1つがEDTコピーする必要がある形式でファイルを実行して保存しています/path/to/filename/data20120913

rsync最後の日に修正されたファイルを見つけるためにfindフラグのようなものを試しましたが、-mtime -1まったく成功しませんでした。

今日のファイルだけをコピーするのは大丈夫ですが、scp現在は4時間のウィンドウがあり、実行はdate +%Y%m%d各サーバーで異なる日を提供するため、少し迷惑です。

見てman date、時間を次のように出力できることがわかりましたが、UTCそれを別の時間帯に出力する方法が見つかりませんでした。EDT

date私はまた、GNU拡張のようなものを使って、date -d 20100909 +%s奇跡の後の秒単位の日付を取得し、手動の秒計算を適用し、それがどのように日付としてレンダリングされるかを見ることができると思います4 * 60 * 60。しかし、夏時間が始まると、まだ1時間になります。

YYYYMMDDに設定されているサーバーから日付を形式で出力する簡単な方法はありますか?EDTUTC

ベストアンサー1

次のようにクエリ期間のタイムゾーンを設定できます。

TZ=America/New_York date

TZ設定とコマンドの間のスペースに注意してくださいdate。 Bourneに似たシェルでは、rc変数は現在のコマンドに対してのみ設定されます。TZ他のシェル(csh、、、 )では常に次のtcshものfishを使用できますenv

env TZ=America/New_York date

長すぎます。

Linuxシステムで。タイムゾーンはディレクトリ内のファイルで定義されています/usr/share/zoneinfo。このような構造をよく呼びます。「オールソンデータベース」創立貢献者を称えるため。

各タイムゾーンのルールはテキストファイルの行として定義され、バイナリファイルにコンパイルされます。このようにコンパイルされた行は、そのゾーンが適用されるデータと時間範囲、および該当する場合は夏時間の変換方法を定義する表記法を定義します。

America/New_Yorkたとえば、「America」ディレクトリには、上記のファイルからNew Yorkに必要な情報が含まれています。

存在しない領域(ファイル名)の仕様は自動的に無視され、UTC時間が報告されます。たとえば、次は間違った時間を報告します。

TZ="America/New York" date ### WRONG ###

単一のUNIX仕様バージョン3(SUSv3またはPOSIX-2001と呼ばれる)では、移植性のためにタイムゾーンの説明を識別する文字列がコロン文字で始まる必要があることを示しています。したがって、次のように書くこともできます。

TZ=":America/New_York" date
TZ=":America/Los_Angeles" date

説明ファイルパスを使用してタイムゾーンを指定する代わりに、SUSv3はPOSIXモデルを記述します。この形式では、文字列は次のように定義されます。

std offset [dst[offset][,start-date[/time],end-date[/time]]]

ここで、はstd標準コンポーネント名、dstは夏時間コンポーネント名です。各名前は3文字以上の文字で構成されています。offset本子子午線の西タイムゾーンは正の値を持ち、子午線の東タイムゾーンは負の値を持ちます。 UTC(以前のGMT)を取得するには、現地時間にオフセットを追加してください。および時間フィールドは、標準/日光変換が発生するタイミングを示しますstartend

たとえば、米国東部では、標準時がUTCより5時間速く、代わりにEST5EDTそれを指定できますAmerica/New_York。しかし、これらの選択肢は特に米国以外の地域では常に認識されていないため、避けるのが最善です。

HP-UX(SUSv3準拠のUNIX)は、/usr/lib/tztabEST5EDT、CST6CDT、MST7MDT、PST8PDTなどのテキストルールとPOSIX名を使用します。このファイルには、Olsonデータベースと同様に、各タイムゾーンのすべての履歴ルールが含まれています。

メモ:次のディレクトリを確認すると、すべてのタイムゾーンを見つけることができます。/usr/share/zoneinfo

おすすめ記事