[PHP] date(日付)のフォーマット一覧 [年/月/日/時/分/秒/曜日]
$dt = date("Y-m-d H:i:s") ;
で本日の日時が取得できる。
例:2020-09-01 10:00:00
但し、ソヌォ前に
date_default_timezone_set('Asia/Tokyo') ;
を書かナゐと、ワクェの分からナゐソレになるコトがあるので注意。
関連:[WordPress] 時刻が9時間ヅレる問題(date_default_timezone_set('UTC’)) [wp-load.php]
本日ではなく、特定日時の場合は、
$dt = date("Y-m-d H:i:s",strtotime($dt)) ;
とシタレ!
strtotimeは、UNIXタイムスタンプを返す。
UNIXタイムスタンプとは、「1970-01-01 00:00:00」からの経過秒数のコトである。
この時、
$dt = date("Y年m月d日 H時i分s秒") ;
とスレば、
「2020年09月01日 10時00分00秒」
と、表記を様々に変ゑラレル。
で、この「Y」「m」「d」「H」「i」「s」などが、「フォーマット文字列」とゆぅヤツで、他にもイロ々あるンで、ソレを挙げたる!
年(Year)
・Y:数字(4桁)
・y:数字(下2桁)
・L:閏年かどうか(閏年なら1、でなければ0を返す) → 実例
年を2桁で表すような輩/ヤクァルァは信用/瀋陽できンので、絶対/舌苔に使わン!
閏(ぅル~)年は英語で「leap year」、「leap」は跳ねる、「quantum leap」は「飛躍的進歩」。
ソニーの元社長/会長/CEOで、先日アレした出井(ゐでゐ)が2006年4月に設立したのはクオンタムリープ、今はどうなッてるンかはシラン(SILANE)。
閏年(肆/4/四年毎):2000、2004、2008、2012、2016、2020、2024、2028年、2032年(「以下略」ではなく「滅亡」)
月(Month)
・m:数字(1桁の場合、先頭に0を付加)
・n:数字(1桁の場合、先頭に0を付加セヅ)
・F:英語のフルスペル(January、February、March…)
・M:英語三文字(Jan、Feb、Mar…)
・t:その月の日数を(28-31)
英語の月
・1月:January / Jan
・2月:February / Feb
・3月:March / Mar
・4月:April / Apr
・5月:May / May
・6月:June / Jun
・7月:July / Jul ←ぢュるッ!!
・8月:August / Aug
・9月:September / Sep
・10月:October / Oct
・11月:November / Nov
・12月:December / Dec
日(Day)
・d:数字(1桁の場合、先頭に0を付加)
・j:数字(1桁の場合、先頭に0を付加セヅ)
先頭に0を付加するかシナゐか
「先頭に0を…」のアレだが、例えば、1月なら「01」とするンが「先頭に0を付加」で、「1」とするンが「先頭に0を付加セヅ」とユ~コト!
DBに格納する際は、0を付加して「2020-09-01 10:00:00」とするンが普通。
ぢぁ~/邪痾、なンで「先頭に0を付加セヅ」があるのかとユ~ト、
$dt = date("Y年m月d日") ;
とすると、
「2020年09月01日」
となり、ガゐぢンはトモカク、天皇(TENG-KNOW)を中心とスル神の國である日本國に在住する赤子(セキシ)には読みニクゐだろう?
$dt = date("Y年n月j日") ;
とするコトで、
「2020年9月1日」
と、大和魂(ヤマト騙スィ~)にフィットするクレヴァ~な見た目にシタレ!
時(Hour)
・H:数字 24時間制(1桁の場合、先頭に0を付加)
・h:数字 12時間制(1桁の場合、先頭に0を付加)
・G:数字 24時間制(1桁の場合、先頭に0を付加セヅ)
・g:数字 12時間制(1桁の場合、先頭に0を付加セヅ)
・a:午前/午后の英語小文字(am/pm)
・A:午前/午后の英語大文字(AM/PM)
普通、午前/午后は、12時間制(h,g)とともに使う。
24時間制と使うと、「午後22時」ような変なソレになるからだ。
分(Minutes)
・i:数字(1桁の場合、先頭に0を付加)
「先頭に0を付加セヅ」がナゐンかはシラン(SILANE)!
秒(Seconds)
・s:数字(1桁の場合、先頭に0を付加)
「先頭に0を付加セヅ」がナゐンかはシラン(SILANE)!
曜日(day of week)
・I:英語のフルスペル(Sunday、Monday、Tuesday…)
・D:英語三文字(Sun、Mon、Tue…)
・w:数字(日曜日は0,月曜日は1、火曜日は2…土曜日は6) 配列用
・N:数字(月曜日は1,火曜日は2、水曜日は3…日曜日は7)
・W:月曜日に始まる年単位の週番号
英語の曜日
・日:Sunday / Sun
・月:Monday / Mon
・火:Tuesday / Tue
・水:Wednesday / Wed
・木:Thursday / Thu
・金:Friday / Fri
・土:Saturday / Sat
で、天皇を中心とスル神の國である日本國の表記はナゐンかとユ~ト、無ゐ!
コヌォ!國ヅォクめッ!!
テコトで、日本語の配列を用意シテヲキ、
$week = array("日","月","火","水","木","金","土") ;
「w」で数字を返してモラゐ、配列から引き出す鹿内/シカナゐ!
$youbi = date('w',strtotime($day)) ;
$youbi = $week[$youbi] ;
$dayが水曜日の場合、「3」を返シてキヲるンで、配列の4番目にアル「水」が得られる。
配列なンで、最初が「0」やから注意/中尉!
分を1桁で表示したい場合
時間にAM/PMを併記しなければ、「4時」と示した場合、午前か午后か不明である。
さらに、鬼●米英語の「AM/PM」ナドではナく、「午前/午后」とすれば、日本國民としてカンペキである。
月で「n」、日で「j」、時間で「A,g」を駆使シテモ、「2022年9月1日 午后8時05分」では、「05分」がクィムォティ惡ゐ!!
上述のように、分(と秒)に於ゐては、「先頭に0を付加セヅ」のフォーマット文字列がナゐ?タメだ。
シャーなゐから、以下の方法でナニする。
// 分のみを取得
$minutes = date("i",strtotime($dt)) ;
// 1文字目を取得(開始位置の「0」に注意)
$minutes_one = substr($minutes,0,1) ;
// 1文字目が「0」なら、2文字目から1文字を取得
if($minutes_one == "0"){
$minutes = substr($minutes,1,1) ;
}
// 処理した「分」を結合シタレ!
$dt = date("Y年n月j日 Ag時",strtotime($dt)).$minutes."分" ;
// AMを午前に、PMを午后に置換
$dt = str_replace("AM","午前",$dt) ;
$dt = str_replace("PM","午后",$dt) ;
結果:「2022年9月1日 午后8時5分」
substrの部分は、以下でもOK。
// 1文字目が「0」なら、後ろから1文字以降を取得
if($minutes_one == "0"){
$minutes = substr($minutes,-1) ;
}
開始位置を負の値とした場合、後ろから数えて…となる。
長さを指定していないが、「後ろから1文字目以降、右へ全部」となるので問題ない。
悪ゐ例
trim/ltrim/rtrimは、空白やタブ、改行だけでなく、削除する文字の指定も可能なので便利だが、1文字目が「0」なら削除しようとして
if($minutes_one == “0"){
$minutes = ltrim($minutes,"0″) ;
}
と書くと、「00分」の時に0が貳ツとも除去され、「分」ノムィとなッてしまう。
trim/ltrim/rtrimは、その位置に連続した削除対象があると、全部削除するノデヌェ。
時間差を求める
現在のUNIXタイムスタンプは、以下のイヅレカで取得できる。
$now = time() ;
$now = strtotime("now") ;
←ゐムァでショ!!
なンで、特定日($dt)から本日の差(秒)は、
$diff_seconds = abs($now - strtotime($dt)) ;
となり、差(分)は、
$diff_minutes = abs(($now - strtotime($report_dt))/60)) ;
となり、差(時間)は、
$diff_hour = abs(($now - strtotime($report_dt))/(60*60)) ;
となる。
# absは絶対値(absolute value)を返す。
情報の公開日時から●時間/分までは表示するが、それ以降は(古ゐンで)表示しナゐ、などの時に使う。
(60*60)はカナラヅ括弧でク々るか、「3600」と書かンと変になるコトが分からン奴は、小学生の算数からヤリナオセ!ドァヴォ!!
関連:[PHP] 指定日から"+1 day"とか [strtotime]