GNU/Linux >> Linux の 問題 >  >> Linux

`date`に別のタイムゾーンからの時間を出力させるにはどうすればよいですか?

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

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

rsyncを試してみました findの-mtime -1のようなものを使用するファイル 前日に変更されたファイルのフラグを立てましたが、運がありませんでした。

scpを使用してもかまいません 当日のファイルをコピーしますが、現時点では、date +%Y%m%dを実行する4時間のウィンドウがあります。 サーバーごとに異なる日が与えられ、それは私を少し悩ませます。

man dateを見る 時刻をUTCとして出力できることがわかります 、しかし、EDTのような別のタイムゾーンとして出力する方法がわかりません。

GNUのようなものも使用できると思います 日付拡張子date -d 20100909 +%s エポックから秒単位で日付を取得するには、手動の4 * 60 * 60を適用します 2番目の計算で、それを日付としてレンダリングする方法を確認します。ただし、夏時間が始まると、それでも1時間オフになります。

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

承認された回答:

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

TZ=America/New_York date

TZの間の空白に注意してください 設定とdate 指図。ボーンのようなrc -シェルのように、TZを設定します コマンドライン専用の変数。他のシェルでは(cshtcshfish )、いつでもenvを使用できます 代わりにコマンド:

env TZ=America/New_York date

tl; dr

Linuxシステムの場合。タイムゾーンは、/usr/share/zoneinfoのファイルで定義されています ディレクトリ。この構造は、創設者を称えるために「オルソンデータベース」と呼ばれることがよくあります。

各タイムゾーンのルールは、テキストファイルの行として定義され、バイナリファイルにコンパイルされます。そのようにコンパイルされた行は、ゾーン名を定義します。ゾーンが適用されるデータと時間の範囲。標準時のUTCからのオフセット。該当する場合は、夏時間への移行および夏時間からの移行の発生方法を定義するための表記。

たとえば、ディレクトリ「America」には、ファイルAmerica/New_Yorkにニューヨークに必要な情報が含まれています。 上記のように。

存在しないゾーン(ファイル名)の指定は黙って無視され、UTC時刻が報告されることに注意してください。たとえば、これは誤った時刻を報告します:

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

SUSv3またはPOSIX-2001として知られるSingleUNIXSpecificationバージョン3は、移植性のために、タイムゾーンの説明を識別する文字列はコロン文字で始める必要があると述べています。したがって、次のように書くこともできます:

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と呼ばれていました)を取得するために現地時間に追加されます。 start およびend 時間フィールドは、標準/昼光遷移がいつ発生するかを示します。

関連:Excel –過去のさまざまな日付の間の平均日数に基づいて将来の日付を予測しますか?

たとえば、米国東部では、標準時間はUTCより5時間早く、EST5EDTを指定できます。 America/New_Yorkの代わりに 。ただし、これらの代替案は、特に米国以外のゾーンでは常に認識されているわけではなく、避けるのが最善です。

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

注: 次のディレクトリを調べると、すべてのタイムゾーンを見つけることができるはずです:/usr/share/zoneinfo


Linux
  1. Lsを実行し、作成された日付で結果を並べ替える方法は?

  2. Grub2のコマンドからの出力に等しい変数を設定するにはどうすればよいですか?

  3. コマンドラインから時間を追跡する方法は?

  1. Linuxでタイムゾーンを確認する方法

  2. Linuxサーバーで日付、時刻、およびタイムゾーンを設定します

  3. ffmpeg出力から継続時間を抽出するには?

  1. Ubuntuのコマンドラインから日付と時刻を同期する方法

  2. `ls`が出力をソートしないようにするにはどうすればよいですか?

  3. CentOS / RHEL :history コマンド出力で実行されたコマンドの日時を取得する方法