[Ruby/Rails] strftimeのよく使うテンプレート

こんにちは、hachi8833です。つい先ほどTechRachoをSSL暗号化いたしました。 関係ありませんが、スクショ撮影中にSlackの時間表示方法を切り替えました。 以下、よく使いそうなオプションを集めてみましたのでスニペットにでもどうぞ。strptimeはまた今度。 注意: コード中で時間取得に使っているTime.nowはすべてRuby 2.3.1の場合です。 RailsであればTime.zone.nowかTime.currentにする必要があります。 strftime Time#strftimeは、Timeオブジェクトの表示形式を指定して文字列に変換します。TimeはRubyの組み込みオブジェクトです。個別のパラメータについてはTime#strftimeをご覧ください。 「2016年10月06日 15:37:49」にしたいとき time = Time.now time.strftime(“%Y年%m月%d日 %H:%M:%S”) 「16-10-06」にしたいとき time.strftime(“%y-%m-%d”) 「04:18 PM」にしたいとき time.strftime(“%I:%M %p”) 「2016/10/06(木)」にしたいとき 以下はRailsのI18nを使わない方法で曜日を表示しています。タイムゾーンなどを正しく扱うには「Railsでの、日本語対応の短縮曜日の表示」などを参考にI18nをお使いください。 wd = [”日”, “月”, “火”, “水”, “木”, “金”, “土”] time = Time.now time.strftime(“%Y/%m/%d(#{wd[time.wday]})”) 参考: 日本語曜日入り日付フォーマットを1行で書く 「午後 04:18」にしたいとき RubyのTimeクラスに午前/午後を取得するメソッドがないので、以下の方法で「午前」「午後」を表示してみました。 time = Time.now ampm = time.hour < 12 ? “午前” : “午後” time.strftime(“#{ampm} %I:%M”) なお、昼の12時が午前か午後かについてはYahoo!知恵袋などに議論がありました。 参考: Ruby: how to get at meridian in Time objects? 関連記事 ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法 RailsでTimeZoneを設定する