Smartyで日付や時間を出力しちゃうよ!PHP

Smarty

Smartyを使ってるみなさんー!今日も$マークをいっぱいタイプしましたか??

いつも$マークをタイプしていて思うんですが・・・、お金が沢山ほしいですねー!!

どうも、煩悩の塊です。

Webサービスを頑張って作って、是非みんなで稼いでいきましょう・・・。

さて、今日はSmartyで日付を出力する方法をご紹介します。

PHP側でdate関数を使って変数を用意してテンプレにアサインすれば済む話ではあるんですが、Smartyで書けたら便利なことも多いですよね。
 

現在の日時をSmartyで出力する

{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}

■実行結果

2015-09-05 00:08:02

PHPで直接書く場合の

date("Y-m-d H:i:s");

と同じ結果を表示できますね!
 

一週間(7日)前の日付をSmartyで出力する

こんな書き方もできるようです。

{$smarty.now-24*60*60*7|date_format:"%Y-%m-%d"}

■実行結果

2015-08-29

data_formatの値は、Smartyのマニュアルが参考になります。

■data_formatの変換指定子

%a - 現在のロケールに基づく短縮された曜日の名前
%A - 現在のロケールに基づく完全な曜日の名前
%b - 現在のロケールに基づく短縮された月の名前
%B - 現在のロケールに基づく完全な月の名前
%c - 現在のロケールに基づく適当な日付と時間の表現
%C - 世紀(年を100で割り、整数に丸めたもの。00から99)
%d - 10進数の日付(01から31)
%D - %m/%d/%yと同じ
%e - 月単位の日付を10進数で表したもの。日付が1桁の場合は、前に空白を一つ付ける。('1'から'31')
%g - 西暦の下二桁 [00,99] %G - 西暦 [0000,9999] %h - %bと同じ。
%H - 時間を24時間表示の10進数で(00から23まで)
%I - 時間を12時間表示の10進数で(01から12までの範囲)
%j - 年間での日付を10進数で表現 (001から366)
%k - 24時間表示の時間の一桁目に空白を入れる ( 0 から 23までの範囲)
%l - 12時間表示の時間の一桁目に空白を入れる ( 1 から 12までの範囲)
%m - 月を10進数で表現 (01から12)
%M - 分を10進数で表現
%n - 改行文字
%p - 指定した時間により `am' または `pm' 、または 現在のロケールに対応した文字列
%r - a.m.およびp.m.表記で表した時間
%R - 24時間表記で表した時間
%S - 10進数で表した秒
%t - タブ文字
%T - 現在の時間。%H:%M:%Sに等しい。
%u - 10進数表記の曜日で[1,7]の範囲。1が月曜日。
%U - 年間で何番目の週であるかを 10 進数で表現。年間で最初の日曜を最初の週の最初の日として数えます。
%V - ISO 8601:1988で規定された現在の年の週番号の10進数表現で 01から53までの範囲となります。 1は最初の週でその週は現在の年に 最低4日はあります。週は月曜日から始まります。
%w - 曜日を10進数で表現。日曜は0になります。
%W - 現在の年で何番目の週であるかを10進数で表現。 年間で最初の月曜を最初の週の最初の日として数えます。
%x - 時間を除いた日付を現在のロケールに基づき表現します。
%X - 日付を除いた時間を現在のロケールに基づき表現します。
%y - 世紀の部分を除いた年を10進数として表現。(00から99までの範囲)
%Y - 世紀を含む年を10進数で表現
%Z - タイムゾーンまたはその名前または短縮形
%% - 文字リテラル`%'

【引用】[Smarty.net] date_format
 

日付の比較をする

日付の比較も、Smartyで可能です。

○PHPの記述例

<?php
	$target = "2015-10-12";
	$smarty->assign("target", $target);

○tplファイルの記述例

{if $target|date_format:"%Y-%m-%d" > $smarty.now|date_format:"%Y-%m-%d"}
  <p>「$target」は今日よりも未来の日付です。</p>
{else}
  <p>「$target」は今日以前の日付です。</p>
{/if}

■実行結果

「$target」は今日よりも未来の日付です。

※9月5日に実行
 

Smartyで日付の「月」や「日」の表示を一桁で行う(0パディングさせない)方法

  {$smarty.now|date_format:'%Y年%m月%d日'}<br />
  {$smarty.now|date_format:'%Y年%-m月%-d日'}

■実行結果

  2015年09月05日
  2015年9月5日

 

Smartyは本当に便利ですね!
これからもいっぱい$マークをタイプしたいと思います!

プロから直接学べるプログラミングスクールの紹介!PHPコースあり!

自己流でプログラミングを覚えようとすると、環境設定でつまづく、書いたプログラムがなぜ動かないか解決できず、多大な時間を浪費してしまいがちです。

担当の指導者(メンター)が付いてくれるTechAcademyなら、分からないことをどんどん質問して解決できます!コードレビューしてもらえるのも素晴らしい点ですね。

【TechAcademy】家で学べるプログラミングスクール

Web制作会社が立ち上げたWebデザイナー育成スクール Web塾超現場主義

Web制作に実際に携わっている講師陣が、現場で通用するスキルを伝授します!卒業後は転職支援、仕事紹介などを行っており、フリーランス独立する道を探すこともできそうです。

また「独立・開業はちょっと...」という方へは、当社の制作案件をお手伝いして頂く道も開けます。
Facebookアカウントでコメント

※本コメント機能はFacebookによって提供されており、この機能によって生じた損害に対してザ サイベースは一切の責任を負いません。

Smarty

ABOUTこの記事を書いた人

とみっち

埼玉でザ サイベースを主催しています。Webクリエイター。フリーランス歴7年。飄々と生きています。これでも育児頑張ってます。長野市出身。 @tomicci 詳しいプロフィール【興味】ギター/DTM/Web/車/田舎/旅/酒/育児 自然の音からデスメタルまで聴きます。【運営サイト】 ザ サイベース おと風景