アプリ版:「スタンプのみでお礼する」機能のリリースについて

Ruby1.9で日付と時刻を合成したい。

日付型で日付と時刻を合成して、日付型の日付時刻を合成したいのですが、
うまく行きません。

<やりたいこと(例)>
日付:2001/01/01
時刻:01:02:03
合成して、2001/01/01 01:02:03としたい。
※いずれも日付型(文字型ではありません)

<試行したこと>
日付:ddd = Date.today
時刻:hhh = Time.now
date = ddd + hhh
ここでundefined method '+'となります。

また、時刻だけを定義出来るクラスはないのでしょうか。
Timeでは時刻だけと思ったのですが、日付+時刻のようです。
こちらもアドバイス頂ければ幸いです。

どうか宜しくお願いいたします。

A 回答 (1件)

DateやTimeのインスタンスの各時刻要素を持ってきて、新しくDateTimeのインスタンスを作成すれば良いと思います。



irb(main):001:0> require 'date'
=> true
irb(main):002:0> ddd = Date.new(2001,1,1)
=> #<Date: 2001-01-01 (4903821/2,0,2299161)>
irb(main):003:0> hhh = Time.now
=> 2010-07-29 19:34:40 +0900
irb(main):004:0> date = DateTime.new(ddd.year,ddd.month,ddd.day,hhh.hour,hhh.min
,hhh.sec)
=> #<DateTime: 2001-01-01T19:34:40+00:00 (2648064221/1080,0,2299161)>
irb(main):006:0>


> また、時刻だけを定義出来るクラスはないのでしょうか。
> Timeでは時刻だけと思ったのですが、日付+時刻のようです。
> こちらもアドバイス頂ければ幸いです。

そのようですね。
DateTimeで年月日の値を適当なものに固定して使用するとか、あるいは時分秒のデータの保持のみが目的であるならば、自分でクラスを定義してしまうのも良いかもしれませんね。
    • good
    • 0
この回答へのお礼

お礼が遅れ申し訳ありません。
親切に丁寧な回答有難う御座います。

この内容でエラーが消えました。有難う御座います。

お礼日時:2010/08/03 11:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!