Movable Typeで日付比較(Movable Type × PHP)

謎のプリン語る。
プログラミングの役立つ情報とか、どうでもいい雑談とか書いてます。
一人書く人増えました。

Movable Typeで日付比較(Movable Type × PHP)

みやびプリン 500 316

500 320

Movable Typeで日付比較(Movable Type × PHP) - サムネイル

※この記事は8年以上前の記事です。
現在は状況が異なる可能性がありますのでご注意ください。

おはこんばちは。
このサイトのブログも、気づけば4年くらいやってるのに気づき、
古い情報の記事も増えてきたので、
よくある、この記事は古いですよ〜表記をしようと思った。
というか、このサイト自体MTで作ってるのに、そういえばMTの記事まったく書いてなかったなっても思い、今回の題材。

そう、今回は、デベロッパーが必ずぶつかる壁、"日付比較"です。

MTだけでやろうと思ったけど、難しかったので、
PHPとの合わせ技にしました。

下記感じでやっていく。

<MTIgnore>エントリーの日付を取得、MT変数に格納する</MTIgnore>
<MTEntryDate format="%Y-%m-%d" setvar="entryDate">
<?php
$articleModiTime = strtotime('<MTGetVar name="entryDate">'); // PHPの変数に、MT変数の日付をタイムスタンプに変換して格納。
$timeNow = time(); // 現在の日付タイムスタンプを格納。

$yearTime = 60 * 60 * 24 * 365; // タイムスタンプの年の秒数を定義
$yearDif = 0; // 現在との年の差を格納するための変数

// 現在と記事の日付が、一年以上の開きがあったら表示
if($timeNow - $articleModiTime > $yearTime):
 $yearDif = floor(($timeNow - $articleModiTime) / $yearTime); // 時間差を年で割って、小数点以下切り捨て
 ?>
<p>
※この記事は<?php echo $yearDif; ?>年以上前の記事です。<br>
現在は状況が異なる可能性がありますのでご注意ください。
</p>
<?php endif; ?>

単純に、タイムスタンプに格納して、
比較して〜一年以上の開きがあったら、表示、みたいにしている。
MTだけで日付比較しようと思ったんだけど、今より古いかどうかしか
できないのと、タイムスタンプを出す方法がすぐ見つからなかったので、
どれだけの日付差があるか、はめちゃくちゃいろいろ調べないとor長いプログラム書かないと
できないと思ったので、PHP使ってしまえと思って、今回のスクリプトでした。

いやー、PHPあったらなまらいろいろできるわ。
多分Perl書ける人なら、わざわざPHP使わないでも、できるかと思います。
僕はMT使ってる割にPerlは全然使えませんw

ついでといってはなんだけど、
HTMLPHPとして実行する方法というか、.htaccessの書き方に関しては下記エントリを参照のこと。
このサイトも、HTMLPHPとして実行してます。

【サーバー別】HTML上でPHPを実行するための.htaccessの記述
http://m630.net/archives/816

いろいろとマルチに言語使えるといろいろやれるね。
つまづいたら、一つの言語にこだわらずに、
複合してみてる道が開けやすいかもしれない。

ではまた。

トラックバック(0)

トラックバックURL:

コメントする

ページトップへ戻る