From: Tadayoshi Funaba Date: 1999-03-10T20:16:08+09:00 Subject: [ruby-list:12731] Re: Time + 1M ふなばです。 >>> Wed, 10 Mar 1999 17:32:46 +0900 の刻に 「wakou」、すなわち >>> wakou@fsinet.or.jp(Wakou Aoyama) 氏曰く wakou> dev の方の each(sunday) で思い出したのですが、Time に対しての分や時、 wakou> 日、月、年の加算等の簡単な書き方というのはどのようになるでしょうか? 僕は答えをしらないんですが、気がついたところだけ。 wakou> 例えば1月後はこんな感じでしょうか。 一ヶ月って判らないんですよね。 wakou> t = Time.now.to_a wakou> t.to_a[4] += 1 wakou> p Time.mktime(*t) これだと、1月31の一ヶ月後は2月31日ということになりますね。実際には3月3 日とかになるでしょうけど。 wakou> ちょっとわかりにくいですよね。 wakou> t = Time.now wakou> p Time.mktime(t.year, t.month + 1, t.day, t.hour, t.min, t.sec) wakou> これはわかりやすいですが、書くのが面倒です。 wakou> 有効期限等を指定する場合に +1M とか +1y という感じの指定をしたい場合、 wakou> 何か良い手はないものかと思いまして。 Java の Calendar にはそういうのありますね。 date.add(Calendar.MONTH, 10); 殆ど Java をつかわないんで、よくしらないんですけど、1ヶ月足して、もう 一度引いても同じ日になるとは限らないというものですね。 ----- wakou> (1.3.1 付属の cgi-lib.rb に cookie を扱う機能が追加されましたが、有効 wakou> 期限の指定は Time オブジェクトまかせになっています。) 有効期限だったら、日数で勘定するってのが無難でしょうか。そういうの多い ですよね。日付だけ考えるなら date か date2 をつかうのもラクです。 # Marshal つかってると、date2 はダメなんだけど。 # そうそう修正版アップロードせねば。 ふなば ただよし