古い記事
ランダムジャンプ
新しい記事
その場しのぎな作業のための日付計算コピペ。
今と昨日と一時間前を出す。
Perl と bash/zsh。

Perl - 標準モジュールonly

use Time::Local;
use POSIX qw(strftime);

# 今
my @lt = localtime;
my $ymdh = strftime "%Y%m%d%H", @lt;
my $ymd = strftime "%Y%m%d", @lt;

# 1日前
my $ut = timegm(@lt);
my @yd_lt = gmtime($ut - 86400);
my $yd_ymdh = strftime "%Y%m%d%H", @yd_lt;
my $yd_ymd = strftime "%Y%m%d", @yd_lt;

# 1時間前
my @oha_lt = gmtime($ut - 3600);
my $oha_ymdh = strftime "%Y%m%d%H", @oha_lt;

print "$ymdh $ymd\n";
print "$yd_ymdh $yd_ymd\n";
print "$oha_ymdh\n";

bash/zsh

# 今
ymdh=`date +%Y%m%d%H`
ymd=`date +%Y%m%d`

# 1〜7日前
ymd1d=`TZ=JST+15 date +%Y%m%d`
ymd2d=`TZ=JST+39 date +%Y%m%d`
ymd3d=`TZ=JST+63 date +%Y%m%d`
ymd4d=`TZ=JST+87 date +%Y%m%d`
ymd5d=`TZ=JST+111 date +%Y%m%d`
ymd6d=`TZ=JST+135 date +%Y%m%d`
ymd7d=`TZ=JST+159 date +%Y%m%d`

# 1〜3時間前
ymd1h=`TZ=JST-8 date +%Y%m%d%H`
ymd2h=`TZ=JST-7 date +%Y%m%d%H`
ymd3h=`TZ=JST-6 date +%Y%m%d%H`

echo $ymdh $ymd
echo $ymd1d $ymd2d $ymd3d $ymd4d $ymd5d $ymd6d $ymd7d
echo $ymd1h $ymd2h $ymd3h

追記: 「どこでも動く」を気にしないのならば、"-v" か "-d" のどちらかで行けるはず。
date -v '+1d' +%Y%m%d
date -v '-1d' +%Y%m%d
(MacOS,FreeBSD,etc.)
date -d '1 days' +%Y%m%d
date -d '-1 days' +%Y%m%d
(Linux)

関連記事