5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 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回まわせばオッケー (^^;

4 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)