« TeraTerm のマクロ機能でSSHサーバでのコマンド処理を自動化する自動化する方法 | トップページ | LinuxディストリビューションにEnterキーを押し続けるだけで root シェルを開くことが出来る深刻な脆弱性(Cryptsetup Initrd root Shell CVE-2016-4484) »

UNIXTime(数値形式)と DateTime(文字列 YYYY/mm/dd HH:MM:SS)形式の相互フォーマット変換の方法

UNIXTime(数値形式)と DateTime(文字列 YYYY/mm/dd HH:MM:SS)形式の相互フォーマット変換の方法

                              
 

キーワード: UNIXTime, UNIX時間, エポック時間, 時刻フォーマット変換、n時間後, bash, シェルスクリプト, date

このエントリーをはてなブックマークに追加

 

1. 概要

 

UNIXTime(UNIX時間) は Unix/Linux系OSでよく用いられる時刻表現で、1970年1月1日0時0分0秒からの経過秒数のことです。UNIX時間は、UTC(世界協定時刻)になっているので、JST(日本標準時刻)に変換するには+9時間する必要があります。

 

UNIXTime は数値なので計算しやすく、経過時間や何時間前、数日前などの計算をするのには便利ですが、人の目でみて何日なのか判断するが難しいです。このため、時刻計算はUNIXTimeの数値で行い、表示部分には文字列のDateTime形式を使うことが多いです。

 

2. UNIX/Linux の date コマンドを使った方

 

(1) UNIXTime から DateTime 形式にフォーマット変換

 
   

$ date --date "@1460295997"      
Sun Apr 10 22:46:37 JST 2016

 

(2) DateTime から UNIXTime 形式にフォーマット変換

 
   

$ date --date "2016/04/10 22:46:37" +%s      
1460295997

 

 

 

3. Perl の Time::localtime を使った方法

 

(1) UNIX時間の数値から文字列日付形式に変換(Perl)

 
   

$ perl -MTime::localtime -e '$TIME=0x498c8910; $tm=localtime($TIME); printf("%d/%02d/%02d %02d:%02d:%02d\n",$tm->year+1900,$tm->mon+1,$tm->mday,$tm->hour,$tm->min,$tm->sec);'

   

2009/02/07 04:01:36

 

(2) 文字列の日付形式から数値のUNIX時間に変換(Perl)

 
   

$ perl -e 'print 0x498c8910';

   

1233946896

 

 

 

4. n時間後の時刻を得る方法

 

date コマンドを使うと簡単に n 日後や、n時間後などを得ることが出来ます。また任意のフォーマットを指定することが可能です。

 

(1) 現在から n日後を得る方法

 

date --date "n days"

 

date コマンドの date オプションで n days の n に数値を入れます。1日後を得る例です。

 
   

$ date      
Sun Apr 10 22:51:09 JST 2016      
$ date --date "1 days"      
Mon Apr 11 22:51:12 JST 2016

 

(2) 現在から n 日前を得る方法

 

date --date "n days ago"

 

date コマンドの date オプションに n days ago と指定します。n部分に数値を入れます。1日前を得る例です。

 
   

$ date      
Sun Apr 10 22:53:04 JST 2016      
$ date --date "1 days ago"      
Sat Apr  9 22:53:08 JST 2016

 

(3) 指定時刻から n 日後を得る方法

 
   

$ date --date "2016/04/10 22:54:00 1 days ago"      
Sat Apr  9 22:54:00 JST 2016

 

(4) 指定時刻から n時間後を得る方法

 
   

$ date --date "2016/04/10 22:54:00 1 hours"      
Sun Apr 10 23:54:00 JST 2016

 

(5) 指定時刻から n時間前を得る方法

 
   

$ date --date "2016/04/10 22:54:00 1 hours ago"      
Sun Apr 10 21:54:00 JST 2016

 

4. 関連リンク

 

 

 

 

                              

« TeraTerm のマクロ機能でSSHサーバでのコマンド処理を自動化する自動化する方法 | トップページ | LinuxディストリビューションにEnterキーを押し続けるだけで root シェルを開くことが出来る深刻な脆弱性(Cryptsetup Initrd root Shell CVE-2016-4484) »

Linux」カテゴリの記事

Solaris」カテゴリの記事

Windows」カテゴリの記事

パソコン・インターネット」カテゴリの記事

技術一般」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/503138/63467920

この記事へのトラックバック一覧です: UNIXTime(数値形式)と DateTime(文字列 YYYY/mm/dd HH:MM:SS)形式の相互フォーマット変換の方法:

« TeraTerm のマクロ機能でSSHサーバでのコマンド処理を自動化する自動化する方法 | トップページ | LinuxディストリビューションにEnterキーを押し続けるだけで root シェルを開くことが出来る深刻な脆弱性(Cryptsetup Initrd root Shell CVE-2016-4484) »

記事一覧

スポンサードリンク


Twitter


無料ブログはココログ

ブログ検索