人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのstrftime についての質問です。日付の場合には、0で補完しないオプション(%e)があるのですが、月の場合にはないようにみえます。1月が、01月になってしまいます。もし、0で補完しないですむオプションあるのだったら教えてください。
http://jp.php.net/strftime


●質問者: isogaya
●カテゴリ:インターネット ウェブ制作
✍キーワード:1月 PHP オプション
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●20ポイント

strftimeの変換指定子は、PHPの実行環境に依存することがあります。

たとえば %e は、手元の WindowsXP + PHP 5.2.5 では動作しませんでした。


Windows環境では VisualC++ のライブラリに依存するため、ご要望のような表示をしたいなら、

$ti = mktime(0, 0, 0, 1, 2, 2008);
echo strftime('%Y/%#m/%#d', $ti);

と書きます。


Linuxの場合、標準Cライブラリでコンパイルされていれば、「strftime - convert date and time to a string」に示されているように、

$ti = mktime(0, 0, 0, 1, 2, 2008);
echo strftime('%Y/%Om/%Od', $ti);

と書きます。


このようにstrftimeの変換指定子は環境によって左右されますので、ゼロを除きたい場合は、dateやsprintfなどを使ったユーザー関数を用意した方がよろしいかと存じます。


2 ● pasela
●100ポイント ベストアンサー

glibcの拡張機能ですが'%-m'でゼロ埋めしない月になります。

一般的なLinux環境なら大丈夫かと。

Windowsでは使えませんでした。


9月の場合(スクリプトは割愛)

%m [09] // 通常
%-m [9] // -をつけるとパディングなし
%_m [ 9] // _をつけるとスペース埋め
%_4m [ 9] // 4桁でスペース埋め
%0m [09] // ゼロ埋め
%04m [0009] // 4桁でゼロ埋め

また、PHPならdate()関数の'n'でゼロ埋めしない月が得られるので、strftime()に拘らないのであればこちらを使うという手もあります。

こちらは環境非依存のようなのでWindowsでも大丈夫です。


strftimeではまった - ぱせらんメモ

http://d.hatena.ne.jp/pasela/20080403/strftime

Manpage of STRFTIME

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strftime.3.htm...

PHP: date - Manual

http://jp.php.net/manual/ja/function.date.php

◎質問者からの返答

%-m ばっちりでした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ