■掲示板に戻る■ 全部 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ではそうしてるよ。
- 8 :名無しさん :2001/06/22(金) 17:07
- PCでなく、組み込み装置で時計機能が必要に
なったんでtimeの周辺全部再実装した
(作業中に他のソースは見てない)。
需要があるならあとで公開するが。どうかな。
スタート時刻を1970/01/01のlongに
するとtime互換。
- 9 :名無しさん@お腹いっぱい。 :2001/06/22(金) 18:18
- >>8
親切だね。きれいなソースならみたいなぁ。
でも、ソースよりもアルゴリズムを解説して何の言語でも
実装できるように皆に教えてあげるといいんじゃないかな?
- 10 :名無しさん@お腹いっぱい。 :2001/06/22(金) 20:48
- # date --date=yesterday
Thu Jun 21 20:48:36 JST 2001
- 11 :2 :2001/06/22(金) 20:56
- 例外の例外に気を取られて例外がスッと抜けてた。鬱だ。
- 12 :1 :2001/06/23(土) 03:45
- おお!皆さんありがとうございます。
始めは2さんのように処理しようと考えていましたが、
シェルの中で5さんみたくPerlで処理する方向にしました。
では、逝ってきます。
- 13 :名無しさん@Emacs :2001/06/23(土) 13:07
- 午前1時ごろに前日分のログを集計する、というような限定的な用途にしか
使わないなら、たとえば
% env TZ=GMT date +%Y-%m-%d
とすることで朝9時までは前日の日付が出るぞ:-)
- 14 :名無しさん@お腹いっぱい。 :2001/06/25(月) 22:17
- >>13
そこまで限定的な用途ならば、
cp today yesterday
date > today
を1日1回まわせばオッケー (^^;
新着レスの表示
掲示板に戻る 全部 次100 最新50read.cgi ver5.26+ (01/10/21-)