date add
dbからとってきたutcをそのままこれで足す
>add()メソッドで日付を加算する
add()メソッドは、DateTimeオブジェクトで指定した日時にある日時分、加算することのできるメソッドです。
そしてある日時分はDateIntervalという時間間隔を表すクラスを使って指定します。間隔を表す文字列フォーマットは「P」から始め、間隔を指示するフォーマット文字として年ならY、月ならM、日ならDといった具合に指定していきます。
<?php
$date = new DateTime('2019-04-01');
$date->add(new DateInterval('P1Y1M1D'));
echo $date->format('Y-m-d');
?>
//出力結果
2020-05-02
https://techplay.jp/column/596
しかしこれだと、どうしても('P1Y1M1D')という書式が必要
Array ( [utc] => -05:00:00 )
これをどう、
M型に変換するか?
ちなみにいまutcはtime型(単なる時間だからマイナス値もありうる)
alert_timeはdatetime型(ある一点を示すのでマイナス値はあり得ない)
$alert_utc_hour = (new DateTime($utc))->format('H');
このやりかただとHはとりだせるも正の数しかできない
タイムゾーンがマイナス値だとエラーになってる
さて。
こういうふうにしましょう
①DBで-05:00:00じゃなくutcを-5とかのint型でもつカラムを新設
②strvalにかけて最初の文字を取ってくるやり方
②からやってだめなら①
utcをいれているtime型は非常に独特な型らしい
}else{
echo ("alart utcがマイナス値です elseにきました<br>");
$utc_str=strval($utc);
echo("utc_str is! " . $utc_str);
echo("<br>");
$utc_str_3 = substr($utc_str, 1, 2);//1-2文字目まで取ってくるぞ -02:00:00なら02でもってくる
echo ("utc_str_3 is ".$utc_str_3);
echo("<br>");
$alert_utc_hour=$utc_str_3;
これで解決できたと思った矢先タイムゾーンに分があるバージョンが発見!
でも同じ方法でできるはずだ
プラスなら問題はない?
no,
プラスでもHしか足してない。
→
プラスでもマイナスでも分の概念を足しましょう
★★★その前に最初のpostでいつも$row3がきてなくてバグる問題
まいったな
一回でもやったタイムゾーンの国は表示されるっぽい
どういうことだ?
この問題も最重要だが分の問題をかたす
→
insertするまえにWHERE alerts.timezone_id=:timezone_idをつかおうとしている
そりゃないでしょうという
→
①先にalertのtimezone_idをinsertし、
②selectして時差の計算をして、
③さらに残りの情報をinsertする必要がある!
★★★ここまだ未実装です
難しいな。
1.マイナスの時や分を処理したかった
2.strvalをかけてutcをstr型にした
3.するとアラートに足し引きがどうもできない。足した時点でobject型がstr型になる
すると時間はひけてもその次分が引けない
str型にするのはまずい
でもutcはしょっぱなからstring型っぽいんだが
→
逆に途中でobject型になってないかい?
先生に教えてもらってけど
これいったんきりおとす
ここに残しておく
//echo date('Y-m-d H:i:s', strtotime('$utc',mktime(0,0,0,5,1,2020)));
//echo date('Y-m-d H:i:s', strtotime('$utc',$alert_date_time));