2013-01-31 115 views
20

strptimestrftimeの違いは何ですか? strptimeDateTimeクラスのメソッドであり、strftimeTimeクラスのメソッドです。strptimeとstrftimeを理解する方法

  1. TimeDateTimeの違いは、コアメソッドが異なる点です。 RubyドキュメントのTimeクラスの説明は参考になりますが、DateTimeの場合は "datetime"と書いてあります。 DateDateTimeを提供するDateクラスもあります。私はこれを理解するのを手伝ってください。
  2. 私はstrptimeを見て、それを「ストリップタイム」と発音したいが、それは意味をなさない。それに良いニーモニックデバイスはありますか?
  3. strptimestrftimeはどういう意味ですか?
  4. どのように覚えていますか?
+0

"04/26/2017"と指定すると、データベースに格納するために、Date.strptime( "04/26/2017"、 '%m /%d /%Y')を解析してフォーマットします。 (%Y-%m-%d) – Donato

答えて

45

TimeDateTimeの違いは、実装と関係があります。 DateTimeは、Railsの世界に由来し、時刻のある任意の日付です。カレンダーベースのシステムです。 Timeは、UTC 1970年1月1日からの秒数で測定され、タイムゾーンには依存しません。いくつかのシステムでは、1901年から2038年の間の値に制限されています。これは伝統的にこの値が32ビット整数として保存される方法の制限ですが、新しいバージョンのRubyでは64ビット値またはBigNum要求に応じ。

簡潔に言えば、DateTimeは、Rubyが伝統的に使用していた時間であるRailsのデータベースから得たものです。日付が重要で、月の終わりや6週間先の日などを知りたい場合は、DateTimeを使用してください。経過時間を測定していて気にしない場合は、時間を使用してください。必要に応じて簡単に変換できます。

Dateは、カレンダーの日付であり、関連する時刻はありません。時間が関係ない場所でこれらを使用することができます。

strptimeは、「構文解析時刻」の略で、strftimeは「書式設定時刻」です。つまり、strptimeは、strftimeの逆ですが、同じ書式仕様を便利に使用します。私はほとんどDateTime.parseが何が起こっているかを調べるのにうってつけであるので、strptimeが使われているのを見たことがありますが、本当にスペルアウトが必要な場合は、忘れずにレガシーパーサーを使用してください。

+3

あなたは良い男、@タッドマン、そして[完全](http://www.youtube.com/watch?v=NMwB5uIWOOI) – nickcoxdotme

+1

時間とすべてのその醜いニュアンスは、あなたがソフトウェアを書くときに覚えていることの一つです。 "1日に何秒ありますか?" 「片手で拍手する音は何ですか?」とほぼ同じです。 – tadman

+1

時間の値はもともとUnixシステムのハードウェアクロックに基づいていました。そのため、元々は "エポック"から始まる値、つまり* nixが来た時の値に制限されていました。 [Wikipediaの記事](https://en.wikipedia.org/wiki/Unix_time)は便利です。 –

関連する問題