• ベストアンサー

date関数を教えてください

どうも日時の取得についてよく理解できません。私のパソコンの時間の取得方法、そうでないものの表記の方法を、またその違いについてどなたかご教授願います。 date関数は「現在のローカル時間が返されます」ということですが、自分のPCの時刻設定が反映されるということでしょうか? また以下の場合の$nowにはいったいどこの時間がはいるのでしょうか? $now = date("U" ,time()); 非常に初心者的な質問ですいません。初心者なので^^

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

date("U") はローカルの時間(動作しているサーバの時間)を取得します。 自分のPCでPHPを動かしている場合には自分のPCの1970年1月1日0時0分0秒からの秒数が入ります。 $now = date("U" ,time()); $date = date("Y-m-d H:i:s",$now); とすると $data にはローカル時間が入ります。 $now = date("U" ,time()); $limit = mktime(0,0,0,10,31,2004); if($now > $limit){ echo "期限切れ"; } で問題はありません。

agawa090
質問者

お礼

ご解答ありがとうございます。サーバーの時間と自分のパソコンの時間の関係がやっと分かりました^^私の場合は、レンタルサーバー上でPHPを処理しているので、そのレンタルサーバーがローカルというわけですね。ソースのご説明もありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • taba
  • ベストアンサー率61% (349/567)
回答No.2

>自分のPCの時刻設定が反映されるということでしょうか? date関数自体は、PHPが動いているサーバーの時間が取得されます。プロバイダ等のサーバーを使っていれば、そちらの時間です。 ローカルというのは、そのサーバーを置いている地域のローカル時間ということです。日本にあればGMT+9(グリニッジ時間より9時間進んでいる)です。 ブラウザを動かしているパソコンの時間ではありません(自分のパソコンでPHPを動かしているのであれば、もちろん自分のパソコンになります)。

agawa090
質問者

お礼

ご解答ありがとうございます。なるほどdate関数はサーバーの時間なのですね。ようやくスッキリしました^^ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> date関数は「現在のローカル時間が返されます」ということですが、自分のPCの時刻設定が反映されるということでしょうか? そう考えていいと思います。 > $now = date("U" ,time()); 入ってくるのは、グリニッチ標準時1970年1月1日0時から現在時刻までの秒数です。time()と同じですが、文字列型で格納されます。

参考URL:
http://en.wikipedia.org/wiki/Unix_epoch
agawa090
質問者

補足

ご解答ありがとうございます^^ ローカル時間というのは自分のPCの時刻というのが分かりました。 しかし、同じdate()関数で、date("U")とうのはローカルの時間ではないといことでしょうか? 例えば日付の期限を設けてWEB上で処理する場合として $now = date("U" ,time()); $limit = mktime(0,0,0,10,31,2004); if($now > $limit){ echo "期限切れ"; } これで問題はないのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • var now = +new Dateの +は何?

    var now = +new Dateの意味を教えてください ・現在時刻を取得? ・「 = +」の意味は? 「+=」みたいな短縮表記した演算子? ・「new Date」や「Date.now()」とは何が違うのでしょうか?

  • time()関数

    Unix系でtime()関数を使うと現在時刻が1秒単位で取得出来ますが、ミリ秒単位で取得する方法ってありませんか?

  • C言語の関数について教えてください

    time_t関数とはどおいう時に使うのかまったくわかりません 調べても暦時間取得するとしか書いていません time(NULL)で現在時刻を取得したらなぜtime_t型変数に格納するのですか? 普通にint型ではいけないのですか? 教えてください 後sizeofについても教えてくださいお願いします

  • date関数について

    PHPバージョン4.1.16を使っています。 date関数でフォーマットされた形の文字を取得したいと思い 次のように1秒で試したのですが、 date("H:i:s", 1); 【結果】09:00:01 というぐあいに、「09」いう時間が付加されてしまいます。 これを取り除いて、00:00:01という結果にするにはどうすれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • PHPのdate()について

    date()関数は日時などを表す関数ですが、 下記スクリプトを実行すると、現在の時刻 を表示するらしいのですが、実際にブラウザ で表示すると、0と表示され、現在時刻が表示 されませんでした。 <?php print date("G"); ?> そこで、xamppのphp.iniファイルのタイムゾーンを修正 [date] #date.timezone = Europe/Berlin date.timezone = Asia/Tokyo として <?php print date("G"); ?> を実行しましたが、やはりブラウザには0とだけ表示されます。 なので、phpスクリプトを <?php date_default_timezone_set("Asia/Tokyo"); print date("G"); ?> としたら 意図したとおり、11時台に実行したら、11と表示されました。 この違いは一体なんなのでしょうか? ご教授下さい。

    • ベストアンサー
    • PHP
  • 記録されている時間から何日経ったか表示したい

    CGI(perl)勉強中です。 2012年12月18日22時15分 のように文字列で記録されている時間があります。 (事情によりこの時刻は上記のような文字列型式でしか記録できません) この時間が、現在時刻と比較し、何日経過しているかを表示させたいと思っています。 time 関数を使えば現在時刻の取得が可能ということは分かりました。 この現在時刻から上記の日時をマイナスすれば経過秒数が分かり、 これを日数に計算しなおせばできると思うのですが、 2012年12月18日22時15分をtime関数で取得した現在時刻と同じ型式に 変換させる方法が分かりません。 また、他によい計算方法があればよろしくお願いします。

    • ベストアンサー
    • Perl
  • MySQLのDatetime型の引き算

    ある機械の1日当たりの処理数を計算したいと思います。 Datetimeの引き算がうまくいかないので、解決方法を教えてください。 1日当たりの処理数は下記の式で計算できます。 1日当たりの処理数=期間内処理数÷((現在日時-作業開始日時)÷(60×60×24)) ※現在日時-作業開始日時で期間の秒数を計算 それを1日の秒数=86400秒(60秒×60分×24時間)で割る。 ------------------ 環境 MySQL:5.0.77 ------------------ テーブル: test カラム :num(INT型),start_date(DATETIME型) ※numは期間内の機械の処理数です。 まず、上記の1日当たりの処理数の数式をSQL文に反映させてみました。 SELECT num , num/((now()-start_date)/86400) as shorisu FROM test 結果は表示されるのですが、かなり大きな数値になって出てきてしまいます。 WEBで情報を検索したところ、DATETIME型を直接減算すると求める結果にならないことはわかりました。 MySQLのページ(11.5. 日付時刻関数) http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html を見てみましたが、どの関数を使えばよいのかいまいちわかりません。 now()-start_dateの部分が正しい値を返すようになれば良いのですが、どのような式を書けばよいのでしょうか?

    • ベストアンサー
    • PHP
  • imac 時計が合いません

    mac10.5.6です。 英語環境で使用しております。 日時&時間(Date&Time)のタブで時刻設定しようとしておりますが、アナログの時計のイラストの時間とその上にある数字表示の時間とに3時間の時差があり、合わせることができません。 (Set data & time automatically) 「日付と時間を自動で合わせる」のクリックをはずし(はずさないとアクティブ状態になりません)数字の時間を日本時間に合わせると、やはり下にあるイラストの時間が3時間ずれます。 時刻サーバーをeric.nc.u-tokyo.ac.jpにしたりしたのですが、反映されません。 一度閉じてしまうとデフォルトの「GMT」(Time Zone, Closest City)に戻ります。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • 現在時刻をyyyymmddhhmmss形式で変数に格納する

    いつもお世話になっております。 現在時刻を取得し、yyyymmddhhmmss形式で ひとつの変数に持たせたいとおもっているのですが 可能でしょうか? ---------- 1 #include <stdio.h> 2 #include <time.h> 3 4 int main(void) 5 { 6 struct tm *date; 7 time_t now; 8 int year; 9 int month; 10 int day; 11 int hour, minute, second; 12 13 /* 現在の日時を取得 */ 14 time(&now); 15 date = localtime(&now); 16 17 year = date->tm_year + 1900; 18 month = date->tm_mon + 1; 19 day = date->tm_mday; 20 hour = date->tm_hour; 21 minute = date->tm_min; 22 second = date->tm_sec; 23 24 return 0; 25 26 } 27 --------------- yearからsecondを結合してひとつの変数に格納することは可能でしょうか??

  • JavaScriptからphp関数の呼び出し

    javaScriptで1秒毎にphpの関数を呼び出しているのですが、 php側で、returnしている日時が動的に表示されません。 何がいけないのか教えて頂けますでしょうか? 色んな参考ページを見ると、phpの関数で動的に 動かせると書いてあるのですが、動的になりません。 -------------------------------------------------------- <jsphptest.htmlソース> <html> <head> <script type="text/javascript"src="jsphptest.php"></script> <script language="javascript"> <!-- function time() { //JavaScriptで日時表示 var now = new Date(); mon = now.getMonth()+1; day = now.getDate(); hou = now.getHours(); min = now.getMinutes(); sec = now.getSeconds(); year = now.getYear(); if (year < 2000) { year += 1900; } if (mon <= "9"){mon = "0" + mon;}; if (day <= "9"){day = "0" + day;}; if (hou <= "9"){hou = "0" + hou;}; if (min <= "9"){min = "0" + min;}; if (sec <= "9"){sec = "0" + sec;}; document.form1.j_tokei.value= year +"/"+ mon +"/"+ day +" "+ hou +":"+ min +":"+ sec; //PHP関数の呼び出し document.form1.p_tokei.value= php_time(); //1秒毎 setTimeout('time()',1000); } // --> </script> </head> <body onLoad="time();"> <form name="form1" mathod=post> JavaScript日時<input type="text" name="j_tokei" size=25><br> PHP日時<input type="text" name="p_tokei" size=25> </form> </body> </html> -------------------------------------------------------- <jsphptest.phpソース> <?php $str .= "function php_time(){"; $str .= "return('".date('Y-m-d H:i:s')."');"; $str .= "}"; echo $str; ?>

このQ&Aのポイント
  • ワードアートの部分途中でエラーが起きて印刷できない問題について相談します。
  • パソコンの環境はWindows10で、無線LAN接続でWi-Fiルーターはbuffaloを使用しています。
  • 関連するソフト・アプリはなく、電話回線はドコモ光です。
回答を見る