■掲示板に戻る■ 1- 最新50

日付の計算

1 :名無しさん@お腹いっぱい。 :2001/06/22(金) 08:01
博識な方、教えて下され。
現在の日付の「一日前」を一発で表示するコマンドってないでしょうか?
AIXってdateの-aが機能しないので、ちょっと困ってます。

2 :名無しさん@引く手あまた :2001/06/22(金) 08:28
こういうのはサクッと作ればいい。
「昨日の日付」だけでいいんだから、過去の日付を考えないで、
しかもどうせ死んでるんだろうから2100年のうるう年も考えない。
(ちょっと手を加えたら簡単に対応できるんだけど。出勤前なのでパス)
#!/usr/bin/sh
today=`date '+%Y-%m-%d'`
year=`expr ${today} : '^\(....\)-..-..$' \| \1`
month=`expr ${today} : '^....-\(..\)-..$' \| \1`
day=`expr ${today} : '^....-..-\(..\)$' \| \1`

if [ ${day} != "01" ]; then
  day=`expr ${day} - 1`
else
  case ${month} in
  01)         year=`expr ${year} - 1`
            month=12
            day=31;;
  02|04|06|08|09|11) month=`expr ${month} - 1`
            day=31;;
  03)         month=2
            day=28;;
  05|07|10|12)    month=`expr ${month} - 1`
            day=30;;
  esac
fi
printf "%04s-%02s-%02s" ${year} ${month} ${day}

3 :名無しさん@Emacs :2001/06/22(金) 08:38
>しかもどうせ死んでるんだろうから2100年のうるう年も考えない。
2100年どころか2004年のうるう年にも対応してないようですが。

つーか、こんなクソスレ立てた>>1はGNU dateを入れてさっさとどっか逝け。

4 :名無しさん :2001/06/22(金) 11:37
いや、2100年にはちゃんと対応してますよ。
2004年は駄目だけど(w

5 :名無しさん@お腹いっぱい。 :2001/06/22(金) 13:59
perl だったら、こんなかんじ。

my @a = localtime(time-24*60*60);
printf "%s/%s/%s\n",$a[5]+1900,$a[4]+1,$a[3];

6 :名無しさん@お腹いっぱい。 :2001/06/22(金) 15:30
秒に直して、24*60*60引いて、年月日にまた戻せばいい。

7 :名無しさん@お腹いっぱい。 :2001/06/22(金) 15:39
>>6
>>5ではそうしてるよ。


次100 最新50
名前: E-mail (省略可) :

read.cgi ver5.26+ (01/10/21-)