dateコマンドを使用してUNIX時刻を文字列時刻に変換する

dateコマンドを使用してUNIX時刻を文字列時刻に変換する

dateコマンドのマニュアルページを読みましたが、UNIX時刻を文字列時刻に変換するオプションはありません。私は次の内容のウェブサイトを見つけました。

date -d @1343715322

@マニュアルや情報ページなどのオプションはありません。誰かがこれを説明できますか?

答え1

通常、マニュアルページではこのような詳細を見つけることができません。

確認すると、info date「日付入力形式」セクションにあります。

答え2

GNU日付マニュアルには次のものがあります。http://www.gnu.org/software/coreutils/manual/coreutils.html#Seconds-since-the-Epoch。 coreutils 情報ページでも同じ説明を見ることができます。

数字の前に「@」がある場合は、内部タイムスタンプ(秒)を示します。数値には内部小数点(「.」または「、」)を含めることができます。内部表現でサポートされていない超過精度は負の無限大に切り捨てられます。このタイプの数値は完全なタイムスタンプを指定するため、他の日付項目と組み合わせることはできません。

内部的には、コンピュータ時間はエポック(明確に定義された時点)以降の秒数で表されます。 GNU および POSIX システムでは、epoch は 1970-01-01 00:00:00 utc なので、「@0」はこの時間を表し、「@1」は 1970-01-01 00:00:01 utc を表します。 。 GNUや他のほとんどのPOSIX互換システムは、負の計算を使用するPOSIX拡張と同じ時間をサポートしているため、「@-1」は1969-12-31 23:59:59 UTCを表します。

既存のUnixシステムは、32ビット2の補数整数を使用して秒を計算します。これは、1901-12-13 20:45:52から2038-01-19 03:14:07 UTCまでの時間を表すことができます。より近代的なシステムは、ナノ秒サブカウントを含む64ビット秒カウントを使用し、1ナノ秒分解能として知られている宇宙寿命のすべての時間を表すことができます。

ほとんどのホストでは、これらの数はうるう秒の存在を無視します。たとえば、ほとんどのホストでは、「@915148799」は1998-12-31 23:59:59 UTCを表し、「@915148800」は1999-01-01 00:00:00 UTCを表し、時間の間のジャンプを表しますできません。 1998-12-31 23:59:60 UTC

関連情報