dateコマンドで日付計算するときに、「1ヶ月前」「1日後」といった構文は便利なのでよく使うのだが、今回この「1ヶ月前」指定をなんとなく使っていて、まずい動きをすることがあったのでメモ。 どういうときにまずいかというと、「日付を比較する基準日が前月のカレンダー上にない場合」の挙動である。例えば、3月31日の前月は、2月31日ということになるが、この日付はカレンダー上存在しないため、結果はなんと3月3日になってしまう。(2月28日 + 3日という計算ロジックなのだろう。。) 具体的に実行結果を見てみる。 まず、普通に実行すると、以下のように正しく1ヶ月前を取得することができる。 $ date +'%Y-%m-%d' 2015-07-30 $ date -d '1 month ago' +'%Y-%m-%d' 2015-06-30次に、3月31日の1ヶ月前を取得してみる。 $ date -d
This package contains both a flexible date/time field type Date field and a DateAPI that other modules can use. The D5 and D6 versions of the Date field require the Content Construction Kit (CCK) module. The D7 version works with the core Field functionality. D8 includes Date in core. The Drupal Handbook pages are at Date/Calendar Documentation. Be sure to read Debugging Information beforereport
Twitter でアドバイスを頂きました。どうやらMacOSX の date コマンドには -v オプションがあるので date -v-1m +”%Y-%m-%d” で上手く取得することができるそうです。 UNIXコマンドにはだいたい3系統(GNU、BSD、SVR4)あり多少癖があるとのことです。Mac OS X は BSD なのでこのような結果となっております。BSD と GNU coreutils でオプションが少しだけ違うので大変ということですね。詳しい方は port で GNU スタイルのコマンドに置き換えてるそうです。 下記の記事も参考になりました。 UNIXの部屋 コマンド検索:date (*BSD/Linux) 今回はじめて UNIX コマンドの3系統 GNU、BSD、SVR4 を意識しました。今回の件をきっかけに、今後この系統というのを意識していくようになると思います。こ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く