• ベストアンサー

PHPのstrtotimeのようなものありますか?

「2011/08/01(日)」という文字列が現在の時間より過去か未来かの 判断をしたいと思います。 PHPだと、 $yukou_time = strtotime("2011/08/01(日)"); $now_time = time(); if( $yukou_time > $now_time ) という感じでできたのですが、perlの場合、PHPのstrtotimeのような ものを見つけることができません。 お手数ですが、このような機能がありましたらおしえてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

文字列からの変換はできませんが、timelocal で年月日→エポックの変換は可能です。 use Time::Local; my ($year, $mon, $mday) = ("2011/08/01(日)" =~ /\d{4}\/\d{1,2}\/\d{1,2}/); my $yukou_time = timelocal(0, 0, 0, $mday, $mon - 1, $year);

haruyutaka
質問者

補足

ありがとうございます。 my ($year, $mon, $mday) = ("2011/08/01" =~ /(\d{4})\/(\d{1,2})\/(\d{1,2})/); 教えて頂いたコードだと日付がうまく取れませんでした。 カッコをつけたら日付が取れましたが、これでよいのでしょうか?

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

その他の回答 (1)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

> my ($year, $mon, $mday) = ("2011/08/01" =~ /(\d{4})\/(\d{1,2})\/(\d{1,2})/); > 教えて頂いたコードだと日付がうまく取れませんでした。 > カッコをつけたら日付が取れましたが、これでよいのでしょうか? すみません、そらで書いたコードなので間違えてました。これで問題ないです。 timelocalはlocaltimeの逆の関数なので、月は0~11になるため、1引く必要がある点だけ注意してください。

haruyutaka
質問者

お礼

ありがとうございます。よくわかりました。

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

関連するQ&A

  • PHPで同じことがしたいのですが

    はじめて書き込みます。 perlだと思うのですが、以下のコード(パスワードを暗号化して返す)と同じ結果が得られるようにPHPに書き換えたいと思っています。(perlはしたことがありません・・・) local(@f_pass) = @_; local($now) = time; local(@ciphset) = ('a'..'z','A'..'Z','0'..'9','.','/'); local($p1,$p2,$wk,$crypton); ($p1, $p2) = unpack("C2", $now); $wk = $now / (60*60*24*7) + $p1 + $p2 - 8; $crypton = $ciphset[$wk % 64] . $ciphset[$now % 64]; if($f_pass[1] == 2){ $crypton = '$1$' . $crypton; } $f_pass[0] = crypt($f_pass[0], $crypton); return $f_pass[0]; cryptを使っているのではとは思うのですが、指定文字列がなんなのか分かり兼ねています。 1週間程悩んだのですが、$1$がmd5に関係していることくらいまでしかわかりませんでした。 どうか、以下のコードで得られた結果をPHPでも同じ結果になるようにお教えいただけませんでしょうか。 よろしくお願いします。

  • strtotime 日付の変換

    PostgreSQLの中にある「2007/07/07-15:19」(文字列)という日付を、PHPで「Thu, 10 Jul 2007 15:19:00 +0900」という形に直すにはどうしたらいいんでしょうか? データベースから日付を取得したまではいいのですが、その後の変換ができずに困っています。strtotime関数を使えばいいらしいというのは聞いたんですが・・・。

    • ベストアンサー
    • PHP
  • PerlでPHPのfsockopen関数のようなものはありますか?

    phpでは fsockopen関数があり、ターゲット・ポート・エラー番号・エラー文字列・タイムアウトを設定すれば、結果を文字列として取得できます。 これをperlで同じことをさせたいのですが、簡単なサンプルがありましたら教えてください。

  • WordPressでPHPで条件分岐

    WordPressを運用していて、記事内でPHP if文を使って条件分岐をしたいです。 WordPressにて提供されている記事の投稿日を参照して、記事投稿○日以前、以降で表示を切り替えたいです。 あまり詳しくないのですが、取り敢えず下記のようにしてみましたが、動きません。。 if( the_time('Ymd') <= date('Ymd', strtotime("-3 days")) ){    print "前の表示"; }else{    print "先の表示"; } PHP内にWordPressの関数が使えないのかな。とも思っていますが、PHP初心者の為調べ方も解らない状況です。 どなたかお分かりになる方、宜しくお願い致します。

  • phpでの日付の変換について

    お世話になります。 たびたびの質問で申し訳ありません。 phpで 2014年03月07日を2014年3月7日と言う形に変換させる際に どのような方法がございますでしょうか。 自分なりに調べてstrtotimeなども考えてみたのですが 日付もおかしく、文字化けをしてしまう状況でした・・。 正規表現などもなかなか理解できないレベルのため、 お手数をおかけしますがご教授いただけましたら幸いです。

    • ベストアンサー
    • PHP
  • PHPの文字コードについて

    Wordpressで作成してWebページを作成しているPHP初心者です。 WordpressでUTF-8ボム無と指定されているので、全てUTF-8ボム無で揃えています。 PHPで出力される文字列は問題ないのですが、PHP内に日本語を埋め込んで 出力しようとすると下記の「更新日」の部分がXYなどと文字化けします。 ブラウザ上でShift-jisに変更すると「更新日」はきちんと表示されますが、 他の出力される文字列が化けてしまいます。 どこかで文字列の指定をしなければならないのでしょうが、まったくわかりません。 (FTP上でサーバーファイルを見た文字列は化けていません。 ブラウザに表示される段階で文字化けします。) どこをどのように変更、または追加したら良いのでしょうか。 <article <?php post_class(); ?>> <header class="entry-header"> <time pubdate="pubdate" datetime="<?php the_time('Y-m-d'); ?>" class="entry-date"> <?php echo'更新日:' ?><?php the_time(get_option('date_format')); ?></time> <h1 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> </header> <section class="entry-content"> <?php the_content(); ?> </section> </article> 宜しくお願い致します。

    • 締切済み
    • PHP
  • 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; ?>

  • 日付・時刻を比較する方法について

    現在時刻との比較をするプログラムを作成した所、 2050年とかとの比較が正常に行われませんでした。 2038年問題が原因のようなのでPEARのCalcクラスを使用しようとしましたが、 現在時刻との比較方法が分かりませんでした。 そのため、どのように記述すればよいかご教示いただける方がいらっしゃいましたら、 宜しくお願いします。 なおPHPのバージョンは4.4.8です。 【ソースコード】 <?php $time = time(); $comparison_date = "2050-02-03 10:20:30"; //$comparison_date = "2009-02-01 10:20:30"; //$comparison_date = "2009-03-01 10:20:30"; print "現在のタイムスタンプ = " . $time . "<br>"; print "比較対象のタイムスタンプ = " . strtotime($comparison_date) . "<br>"; print "<br>"; if (time() < strtotime($comparison_date)) { print "比較対象は現在より未来です。"; } else { print "比較対象は現在より過去です。"; } ?> 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  •  %php stringcast.php 100

    <?php // stringcast.php if (!isset($argv[1])) { exit; } $num = $argv[1]; if ($num == 100) { echo "num is 100", PHP_EOL; } else { echo "num is not 100",PHP_EOL; } このプログラムを %php stringcast.php 100のように実行すると、引数の100は PHPには文字列型として渡されます。・・・  以上参考書にあります。  作業の流れが分かりません。  %php stringcast.php 100とは!何のことなのでしょうか!?  以上宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPからデーターの渡し方で悩んでます

    PHP初心者です。 質問の仕方がおかしいかもしれませんが教えてください。 ウィンドウズ上で動くソフトがあります。 そのソフトで、IDとパスワードを入力してPOST送信 PHP側でデーターを受け取る。 IDとパスワードが認証されたなら ソフトに”OK”という文字列を返す。 認証されなかったら ”NG”を返すPHPを作成してほしいと頼まれました。 ”OK” ”NG"をどのようにソフトに渡したらよいかがわかりません。 一応このような感じでPHPを作成しているのですが $u_id = $_POST['u_id']; $passwd = $_POST['passwd']; $pa_data = file($data_file); $pa_flag = 0; for($i=0; $i<count($pa_data); $i++){ list($id,$pass) = split(",", $pa_data[$i]); if($id == $u_id && $pass == $passwd){ $p_flag++; } } if($pa_flag > 0){ *****"OK文字列を返す"; } else { *****"NG文字列を返す"; } ウィンドウズ上で動くソフトが何でつくられたかがわからないので答えにくいかもしれませんが *****"OK文字列を返す" *****"NG文字列を返す" の部分を具体的に教えていただきたいと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP