忍者ブログ

からすまる日誌

20200330pm01 制作課題

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

20200330pm01 制作課題

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));
 
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30