Top > 時刻操作の比較表

時刻操作の比較表 Edit

Ruby(Timeクラス) Perl PHP JavaScript SugarJS C# Go(import "time")
現在時刻 t = Time.now my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday ) = localtime( time );
$year += 1900; # 西暦
$mon++; # 月
$t = time();
$a = getdate($t);
var t = new Date(); var t = Date.create(); DateTime t = DateTime.Now t := time.Now()
指定時刻 t = Time.local(2009, 12, 31, 11, 30, 0) use Time::Local;
$t = timelocal(0, 30, 11, 31, 12-1, 2009); # (sec, min, hour, mday, mon, year)
$t = mktime(11, 30, 00, 12, 31, 2009);
// (hour, min, sec, mon, mday, year)
var t = new Date(2009, 12-1, 31, 11, 30, 0) var d = Date.create(2009, 12-1, 31);
var d = Date.create(2009, 12-1, 31, 11, 30, 0);
var d = Date.create("2009/12/31 11:30:00");
DateTime t = new DateTime(2009, 12, 31, 11, 30, 00); t := time.Date(2001, 5, 20, 23, 59, 59, 0, time.Local)
Unixエポック秒 t.to_i $t $t Math.floor(t.getTime()/1000) 通常のJSと同じ t.Unix()
t.year $year $a["year"] t.getFullYear() 通常のJSと同じ t.Year t.Year()
t.month (1~12) $mon $a["mon"] t.getMonth() + 1 通常のJSと同じ t.Month t.Month()
t.day $mday $a["mday"] t.getDate() 通常のJSと同じ t.Day t.Day()
t.hour $hour $a["hours"] t.getHours() 通常のJSと同じ t.Hour t.Hour()
t.min $min $a["minutes"] t.getMinutes() 通常のJSと同じ t.Minute t.Minute()
t.sec $sec $a["seconds"] t.getSeconds() 通常のJSと同じ t.Second t.Second()
曜日 t.wday (0(日曜日)~6(土曜日)) $wday (0(日曜日)~6(土曜日)) $a["wday"] (0(日曜日)~6(土曜日)) t.getDay() 通常のJSと同じ (int)t.DayOfWeek (0(日曜日)~6(土曜日)) t.Weekday()
文字列でフォーマットする Time.now.strftime("%Y-%m-%d %H:%M:%S") sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec); date('Y-m-d H:i:S', $t) +で文字列結合する。 d.format('{yyyy}/{MM}/{dd} {hh}:{mm}:{ss}'); t.ToString("yyyy-MM-dd HH:mm:ss") t.Format("2006-01-02 15:04:05")
差(日数)を求める ((t1 - t2)/(60*60*24)).to_i int($t1 - $t2)/(60*60*24)) floor($t1 - $t2)/(60*60*24)) Math.floor((t1.getTime()-t2.getTime())/(60*60*24*1000)) Date.create("2015/05/20").daysAgo("2015/05/22");
時刻が00:00:00でないと意図通りにならない場合があるので注意
TimeSpan ts = t1 - t2;
ts.Days;
Go
n日後を求める t2 = t + 60*60*24*n $t2 = $t1 + 60*60*24*n $t2 = $t1 + 60*60*24*n t2 = new Date();
t2.getTime(t1.getDate() + n)
Date.create().addDays(n) t2 = t1.AddDays(n); Go
文字列のパース retuire 'time'
t = Time.parse("2009/12/23 21:44:50")
"2009-12-23 21:44:50" =~ /(\d{4})-(\d{2})-(\d{2})\s*(\d{2}):(\d{2}):(\d{2})/;
my ($year, $mon, $mday, $hour, $min, $sec) = ($1, $2, $3, $4, $5, $6);
$t = strtotime("2009-12-23 21:44:50"); t = new Date(Date.parse("2009-12-23 21:44:50".replace('-','/', 'g'))) t = Date.create('2015/05/23 12:34:56');
非常に柔軟・多様なパース方法を備えている。
DateTime.Parse("2009-12-23 21:44:50"); t, err := time.Parse( "2006-01-02 15:04:05 -0700", // スキャンフォーマット
"2013-06-19 21:54:23 +0900") // パースしたい文字列
月の日数を取得 require 'date'
Date.new( Date.today.year, Date.today.month, -1 )
Perl date('t', timestamp) JavaScript new Date().daysInMonth() C# time.Date(year, m+1, 0, 0, 0, 0, 0, time.UTC).Day()

strftime、strptimeのフォーマット Edit

strftime, strptimeは元々はC言語のライブラリ関数。
このフォーマットはどの言語でも共通のはず。

%A 曜日の名称(Sunday, Monday ... )
%a 曜日の省略名(Sun, Mon ... )
%B 月の名称(January, February ... )
%b 月の省略名(Jan, Feb ... )
%c 日付と時刻
%d 日(01-31)
%H 24時間制の時(00-23)
%I 12時間制の時(01-12)
%j 年中の通算日(001-366)
%M 分(00-59)
%m 月を表す数字(01-12)
%p 午前または午後(AM,PM)
%S 秒(00-60) (60はうるう秒)
%U 週を表す数。最初の日曜日が第1週の始まり(00-53)
%W 週を表す数。最初の月曜日が第1週の始まり(00-53)
%w 曜日を表す数。日曜日が0(0-6)
%X 時刻
%x 日付
%Y 西暦を表す数
%y 西暦の下2桁(00-99)
%Z タイムゾーン trap
%% %自身

Ruby

t = Time.now
puts t.strftime("%Y年%m月%d日(#{%w(日 月 火 水 木 金 土)[t.wday]}) %H時%M分%S秒")
# 2007年01月23日(火) 17時09分43秒

touchコマンドの時刻 Edit

基本的に年から分まで指定すると覚えておけばよい。
秒まで指定したい場合は . (ドット)をつける。

[[CC]YY]MMDDhhmm[.ss]

2009-12-31 02:34のファイルを作成

touch -t 200912310234 hoge

2009-12-31 02:34:56のファイルを作成

touch -t 200912310234.56 hoge

Linuxの場合は -d オプションで柔軟な指定ができる。BSDには -d オプションはない。

touch -d "2009-12-31 11:30:00"

dateコマンドの時刻 Edit

$ date +'%Y/%m/%d %H:%M:%S'
2015/05/19 11:05:42

Unixエポック秒を表示する

date +%s

指定日時のUnixエポック秒を表示する

date -d '2009-01-23' +%s

うるう秒について Edit

time(2)で得られるUnixエポック秒がうるう秒に対応しているかはシステム依存である。
対応していない場合の方が多いだろう。

日付を求めるために86400(60*60*24)を使って演算する場合は、00:00のUnixエポック秒でなく12:00のエポック秒を使う方がよい。



URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes