Web + Life Hack

〜True But Useless〜

【Ruby】【rails】あなたは大丈夫?日付型の判定の違いについて。

突然ですが、railsで日付型の条件分岐を使用する際は何を使用していますか?

僕は意識せずに「DateTime.new()」を使用していました。

しかし、ソースRVでバグの温床であったことが判明しました。

 

結論から言うと、日本時間での日付比較は①Datetime.new()や②Date.new()ではなく、

Time.new()やlocal.time()で行うべきということです。

 

 ①if hoge.created_at >= Datetime.new(2013,2,19) 

 →返却値false

    →Datetime.new(2013,2,19) が日本時刻とは違う形式で返却

 →つまりhoge.created_atが2/20以降で正の処理を行います。

 

②if hoge.created_at >= Date.new(2013,2,19) 

 →返却値false

 →Date.new(2013,2,19) が日本時刻とは違う形式で返却

 →つまりhoge.created_atが2/20以降で正の処理を行います。

 

③if hoge.created_at >= Time.new(2013,2,19)

 →返却値true

 →Time.new(2013,2,19) が日本時刻で返却

 →つまりhoge.created_atが2/19以降で正の処理を行います。

 

railswebサービスを運用している方、rails系既存サービスを引き継いでるweb系の会社の方は一度、ソースRVしてみてはいかがでしょうか。

 

告知

現在、私はmoreiという団体を設立し「Sweet Swift」という女性限定iOSプログラミング講座を開催しております。

 

アプリが作りたいと考えている方やプログラミング始めたいという方が

おりましたらぜひお誘いの上、ご参加ください!

(女性の方限定となります。ご了承ください。)

 

直近の開催日時などは以下のとおりです。

10/1(木) 20:00〜22:30@Viibar様(目黒駅近く)

morei.doorkeeper.jp

10/17(土) 14:00〜16:30@Lib様(渋谷駅近く)

morei.doorkeeper.jp

11/06(金) 18:45〜21:00@ファンコミュニケーションズ様(渋谷駅近く)

morei.doorkeeper.jp

11/18(水) 20:00〜22:30@メンバーズキャリア様(月島駅近く)

morei.doorkeeper.jp

12/3(木) 20:00〜22:30@ナイル株式会社様(五反田駅近く)

morei.doorkeeper.jp

 

アプリを学びつつ、Web系会社の雰囲気も感じられる機会になるかと思いますので

ご参加お待ちしております!