日付をカッコよくしたい date(”m”) を date("j") で表示させる - PHPプロ!Q&A掲示板

350

  • 500P

日付をカッコよくしたい date(”m”) を date("j") で表示させる

質問日時 / 2007年2月7日 21:47 (最終編集:2月8日 00:01)    回答数 / 10件

Questioner:  yumisaiki  このエントリーをはてなブックマークに追加 

キーワード / 日付表示    置き換え    変換   

 http://www.phppro.jp/qa/346
ではすっかりお世話になりました。

お陰で、http://www.omosiro.ne.jp/のトップページにhttp://www.omosiro.ne.jp/schedule/p_sche.phpのデータを利用して見事に予定が表示されるようになりました。

しかし、 08日 と表示されるのは いかにも カッコ悪いと思えてしまい、これをなんとか0を取りたいのですが、str_replace( )で 単純に 0を置き換えろとすると 10日の 0も取れてしまいます。

それからついでに 曜日も書きたいのですが、どうしたらいいですか?

 簡単だと思うのですが、つい楽なので 聞いてしまいます。 すみません。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01signal>>CODE $day = '08'; <<CODE だとした場合 >>CO
┃┗A01-1yumisaiki$day += 0; の意味がそうなるのでしょうか? この
┃ ┗A01-1-1signal>>CODE $day += 0; <<CODE とは >>CODE $day =
┃  ┗A01-1-1-1yumisaiki言い訳になりますが、この書き方がなかったんです。
┃   ┗A01-1-1-1-1signal蛇足です。 2行目の >>CODE $stamp = strtotim
┃    ┗A01-1-1-1-1-1yumisaikiありがとうございます。さっそく書き直しましたが…。
┃     ┗A01-1-1-1-1-1-1signalgetdate() が異常な時刻を受け取ったため現在の時刻を
┗A02bontaro変数 $var に '08' が格納されているとすると、 >>
 ┗A02-1yumisaikiありがとうございます。 "%d" というのは どういう
  ┗A02-1-1bontaro% - パーセント文字。 d - 引数を整数として扱い、 1

回答一覧

並び替え:

A01 満足
answerersignal [2月7日 22:01]

  1. $day = '08';
だとした場合

  1. $day += 0;
  2. print $day; # 8 と表示

  1. printf( '%d', $day ); # 8 と表示

どちらでも大丈夫です。
文字列型を数値型に変換してあげればよいのです。


> それからついでに 曜日も書きたいのですが、どうしたらいいですか?

http://www.php.net/manual/ja/function.strtotime.php
http://www.php.net/manual/ja/function.getdate.php



正直なとこポイントはいらんです。

この意見に回答する

ツリーへ TOPへ

A01-1
replyeryumisaiki [2月7日 22:14]

$day += 0; の意味がそうなるのでしょうか?

この式(?)便利だと思うのですが、これについて解説して欲しいです。

ポイント頼らず自分でがんばろうと思うのですが、つい楽なもので、すみません。

その日のデータの曜日を取得して表示させるというのは…。示してくれたマニュアルのところでわかりませんでした。

ちょっと自分で考えてみます。 すみません。

この意見に回答する

ツリーへ TOPへ

A01-1-1 満足
replyersignal [2月7日 22:48]

  1. $day += 0;
とは

  1. $day = (int)$day; # 文字列型を数値型に明示的にキャストします
もしくは

  1. $day = $day + 0; # 文字列型を数値型と足し算することで暗黙的に型のキャストが行われます
と同義です。

PHPは型を意識せず使える言語ですが、内部ではしっかり型を持っています。
print_r ではなく var_dump でデータ構造を表示すると幸せになれるかもしれません。


逆に数値型を文字列としたい場合は
  1. $day += '';
とすれば文字列型にキャストされます。



  1. # Unixタイムに変換
  2. $time = strtotime( '2007-02-07' );
  3.  
  4. # Unixタイムを日時の情報に変換
  5. $date = getdate( $time );
  6.  
  7. getdateの仕様を参照あれ
  8. $wday = array( '日', '月', '火', '水', '木', '金', '土' );
  9.  
  10. # 対応する曜日を表示
  11. print $wday[$date['wday']];

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyeryumisaiki [2月7日 23:11]

言い訳になりますが、この書き方がなかったんです。

http://www.phppro.jp/qa/346
で完成したものに、

  1. $daydata += 0; // 日付の前の数字をとる      
  2.          $stamp = strtotime('$year-$month-$daydata');
  3.            $date = getdate( $stamp );
  4.            $wday = array( '(日)', '(月)', '(火)', '(水)', '(木)', '(金)', '(土)' );
  5.            $week = $wday[$date['wday']];
を書き加えて、さらに希望に近づきました! ありがとうございました。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1 満足
replyersignal [2月7日 23:45]

蛇足です。

2行目の

  1. $stamp = strtotime('$year-$month-$daydata');

でシングルクォーテーション内の変数は展開されません。

  1. $year    = 2007;
  2. $month   = 2;
  3. $daydata = 7;
として

'$year-$month-$daydata' は '2007-2-7' とはなりません。
そのままの文字列として扱われます。

クォーテーション内の変数を展開する場合はダブルクォーテーションを使います。

"$year-$month-$daydata" であれば "2007-2-7" となります。

$year . '-' . $month . '-' . $daydata でもOKです。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1
replyeryumisaiki [2月8日 00:01]

ありがとうございます。さっそく書き直しましたが…。
どうして 動いたんでしょうか??

 今、次の月を表現するのに困っています。

 今月のファイルがなかったら、次の月のファイルがもしあったら、次の月のファイルのもっとも早いものを出せと…。

 次の月の取得もタイムスタンプから算出するべきなんだろうか??

 また スレッドをたてると思います。

 こんなにたててもいいんであろうかと思いつつ。
 

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1-1
replyersignal [2月8日 00:55]

getdate() が異常な時刻を受け取ったため現在の時刻を
使用したのだと思われます。


> 今、次の月を表現するのに困っています。

年の繰り上げ繰り下げを力技で計算する方法もありますが、
そこだけでかなりの労力を使ってしまうでしょう。

http://www.php.net/manual/ja/function.mktime.php

さきほどの strtotime() もDBから取得した時刻をそのまま
タイムスタンプに直すという使い方でないのであれば、
mktime() のほうがよりスマートかもしれませんね。

PHPはとても優秀なので 2007-13-01 と指定すると 2008-01-01 と
良いように解釈してくれます。

なので単純に現在の月に + 1 した数値を mktime() へ指定すれば
期待する値が返ってくるはずです。

この意見に回答する

ツリーへ TOPへ

A02 参考になった
answererbontaro [2月7日 22:14]

変数 $var に '08' が格納されているとすると、

  1. $new_var = sprintf("%d", $var);

で整形することが出来ます。
見当違いな回答でしたら申し訳ありませんm(_ _)m

この意見に回答する

ツリーへ TOPへ

A02-1
replyeryumisaiki [2月7日 22:21]

ありがとうございます。
"%d" というのは どういう意味になるのでしょうか?

この意見に回答する

ツリーへ TOPへ

A02-1-1 満足
replyerbontaro [2月7日 22:30]

% - パーセント文字。
d - 引数を整数として扱い、 10 進数として表現します。

つまり、08 という文字列を 10 進数の整数として扱うので 8 と表示されることになります。
その他にも、整形の種類は数多く存在します。
詳しくは、下記リンクを参照してください。

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

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
マジッククォートとmysql_real_escape_string
 このエントリーをはてなブックマークに追加 
A
magic_quotes_gpcでは、SQLインジェクション対処は十分できません。主な理由として、以下が上げられます。 ・magic_quotes_gpcは文字コードを考慮しないで処理するので、Shift_JISを使っている場合、SQLインジェ...

>>続きを読む

SQLインジェクション対策は時と場合で使う関数が変わります。その時にあったものを使いましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)