カウントダウンとか色々悩んだもののメモ。
2038年問題があるから「strtotime」じゃなくて「DateTime」使えって色々書いてあるけど、後20年もあるし大丈夫じゃね?
と思う時点でダメなんだろうな。www
「今日」の日付表示
「date(‘Y/m/d’)」が「今日」の日時を取得
「echo」は「反映する」の意味。
<?php echo date('Y/m/d'); ?>
更新日取得
よく使うやつ。
でも最近はwordpressで構築したりするから、あんまり使わないのかも?
呼び出したい場所へ設置。
サーバータイムを取得するため、同サーバーのみ取得可能。
「時:分:秒」が不要ならば「H:i:s」を削除。
※H/24時間表示0埋め、h/12時間表示0埋め、G/24時間表示0無し、g/12時間表示0無し
※午前・午後表記・・・「am pm」の小文字表示なら「a」、「AM PM」の大文字表示なら「A」
<? print date("Y/m/d H:i:s A",filemtime('./該当ファイルへのパス'));?>
指定した期日を基準に表示内容の変更
「ソース1」は、ページ最上部(<!doctype html>よりも上)に設置。
期間を変えたい場合は「-1 month」「-15 day」「-1 week」の記述を変更(例:10日後の場合は「+10 day」)。
「month」「week」「day」の前にある半角スペースに注意。
判定は記述順なので、期間の長さが複数ある場合は少ないものから記述。
例:※1週間以内じゃない→15日以内じゃない→1ヶ月以内じゃない→1ヶ月以上である
「ソース2」は、呼び出したい場所に設置。
「yyyy/mm/dd」は指定日当日を記述。
月日が一桁の場合は0埋めしないと正確に表示されない。
例:2019年1月1日 → 2019/01/01
◆ソース1==========
<?php function getEndMark($a){
$result = '';
if($a > date("Y/m/d",time()) && date("Y/m/d",time()) >= date("Y/m/d",strtotime("$a -1 week"))){
//指定日1週間以内〜指定日前日
$result = '指定日1週間以内〜前日';
}elseif($a > date("Y/m/d",time()) && date("Y/m/d",time()) >= date("Y/m/d",strtotime("$a -15 day"))){
//指定日15日以内〜指定日8日前
$result = '指定日15日以内〜8日前';
}elseif($a > date("Y/m/d",time()) && date("Y/m/d",time()) >= date("Y/m/d",strtotime("$a -1 month"))){
//指定日1ヶ月以内〜16日前
$result = '指定日1ヶ月以内〜16日前';
}elseif($a gt; date("Y/m/d",time())){
//指定日1ヶ月以上前
$result = '指定日1ヶ月以上前';
}elseif($a === date("Y/m/d",time())){
//指定日当日のみ
$result = '指定日当日';
}elseif($a < date("Y/m/d",time()) && date("Y/m/d",time()) >= date("Y/m/d",strtotime("$a +1 week"))){
//指定日翌日〜1週間以内
$result = '指定日翌日〜1週間以内';
}elseif($a < date("Y/m/d",time())){
//指定日から1週間以上経過
$result = '指定日から1週間以上経過';
}
return $result;
}
?>
◆ソース2==========
<?php print getEndMark("yyyy/mm/dd"); ?>
カウントダウン+当日+カウントアップ
表示したい箇所へ挿入
<?php $today = date('Y/m/d'); //アクセスした日の表示 $day01 = strtotime($today); // Unixタイムスタンプに変換 $day = ('2019/11/06'); //カウントの基準となる日 あとでechoの表示に使うので直接入力 $day02 = strtotime($day); // Unixタイムスタンプに変換 $Difference = ($day02 - $day01) / (60 * 60 * 24); //Unixタイムスタンプの差分を日へ変換(60秒x60分x24時間) $DifferenceOut = abs($Difference); //「-1日」という表記を避けるため、数の絶対値を取得。 if($Difference === 0){ //基準日当日 echo $day.'は今日です'; }else if($Difference >= 1){ //現在は基準日より前 echo $day.'は、今日から'.$DifferenceOut.'日先です'; }else if($Difference <= 1){ //現在は基準日より後 echo $day.'から'.$DifferenceOut.'日経過しています'; } ?>
※abs()・・・数の絶対値を取得 (ex: 「−2」→「2」)
「−1日経過しています」という表記を避けるために使用。
指定日から指定日数間表示、以後消去
「ソース1」は、ページ最上部(<!doctype html>よりも上)に設置。
期間を変えたい場合は「+1 week」の内容を変更。(例:1ヶ月後なら「+1 month」。2日後なら「+2 day」)
「ソース2」は、呼び出したい場所に設置。
◆ソース1==========
<?php function getNewMark($c){ $result = ''; if(date("Y/m/d",strtotime("$c +1 week")) >= date("Y/m/d",time())) $result = '表示内容(htmlタグ可)'; return $result; } ?>
◆ソース2==========
<?php print getNewMark("yyyy/mm/dd 00:00:00"); ?>
指定日時まで内容表示
「ソース1」は、ページ最上部(<!doctype html>よりも上)に設置。
同ページにおいて複数の時限表示が必要な場合、
「getMark01」、「$e」、「表示内容」を変更したものを必要数設置することで対応可。
「ソース2」は、呼び出したい場所に設置。
「yyyy/mm/dd」には、表示させる最終日を入力。
◆ソース1==========
<?php function getMark01($e){ $result = ''; if(date("Y/m/d",time()) <= $e) $result = '表示内容(htmlタグ可)'; return $result; } ?>
時間も指定したい場合は「date」の指示に
if(date("Y/m/d H:i",time()) <= $e)
と、「H:i」を追加して記述。
◆ソース2==========
<?php print getMark01("yyyy/mm/dd") ?>
時間も指定したい場合は
<?php print getMark01("yyyy/mm/dd hh:ii") ?>
時間記述のあるソース1を記述の上、「24時間表示0埋め」で指定。
【共通】期間の記述について
期間を変えたい場合は「-1 month」「-15 day」「-1 week」の記述を変更。
例:10日後の場合は「+10 day」
コメント