PowerCMS XのCMSテンプレート処理で指定日から指定日数離れた日付を取得する。

投稿日: 更新日:

多分忘れるのでメモ。

以降、指定日から一週間後の日付を取得する例。

<mt:setvar name="date_ts__base" value="2038-01-01 00:00:00" />
<mt:date ts="$date_ts__base" strtotime setvar="date_unix__publish" />
<mt:math eq="x + (86400 * 7)" x="$date_unix__publish" setvar="date_unix__1weeklater" />
<mt:date unixtime="$date_unix__1weeklater" format="Ymd" setvar="date_yyyymmdd__1weeklater" />
<pre>
指定日(format属性でフォーマット指定)=<mt:var name="date_ts__base" />
指定日(unix time)=<mt:var name="date_unix__publish" />
指定日より一週間後(unix time)=<mt:var name="date_unix__1weeklater" />
指定日より一週間後(format属性でフォーマット指定)=<mt:var name="date_yyyymmdd__1weeklater" />
</pre>
一旦変数date_ts_baseに設定した日時をunixtimeに変換して、7日(=86400*7秒)を加算した後、指定のフォーマットに変換する。
何日前とかもこの応用で行ける。
なお、2038年問題に対応してるかは、詳細は他サイトが詳しいので割愛するが、主にphpのパッケージのエディション・バージョンや設定周りの問題と思われる。
手っ取り早く確かめたいなら、対象環境にて、前述コードについて「86400*7」を「86400*366」とか大きな値に変更して動作確認すると対応/非対応が分かるはず。

参考

「2038年問題」を華麗に解決!~エンジニアの仕事~|全研本社株式会社 公式ブログ (zenken.co.jp)

関連するタグ

関連するタグは現在ありません。