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

http://jp.php.net/strftime

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/12/01 12:50:42
  • 終了:2008/12/01 14:57:35

ベストアンサー

id:pasela No.2

pasela回答回数7ベストアンサー獲得回数32008/12/01 14:13:20

ポイント100pt

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

id:isogaya

%-m ばっちりでした。

2008/12/01 14:57:04

その他の回答(1件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/12/01 13:47:30

ポイント20pt

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などを使ったユーザー関数を用意した方がよろしいかと存じます。

id:pasela No.2

pasela回答回数7ベストアンサー獲得回数32008/12/01 14:13:20ここでベストアンサー

ポイント100pt

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

id:isogaya

%-m ばっちりでした。

2008/12/01 14:57:04
  • id:isogaya
    PHP の date 関数にはありますね。
    http://jp.php.net/manual/ja/function.date.php
    小文字 n で指定します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません