0 レビュー
3 回答
php-日時計算の標準化
日時形式を標準化する方法はありますか?
現在、データベースからデータを取得しています。取得した日時の計算はこの形式 2013-9-3---02:18 <であるのに対し、データベースは私の日時をこの形式
2013-09-01 17:51:00
に並べ替えています。 /code>2番目の日時のを削除できるかもしれませんが、最初の1とは形式が異なっているようで、実行できなかった理由は差分日時の計算。
データベースに挿入する前に比較を実行できるように、新しい取得日時の標準化を最初の1つとまったく同じに変換または変更するための推奨事項または最良の方法はありますか?
その上、2つの日時の差を計算したいと思います。オンラインでかなりの数の例を見ましたが、そのほとんどは日時ではなく日付を計算しています〜誰かが私を導きますか?
わからない
0
レビュー
答え :
解決策:
これを試してください
$date = '2013-9-3---02:18';
$newdate = str_replace('---',' ',$date);
$phpdate = strtotime($newdate);
echo $mydate = date( 'Y-m-d H:i:s', $phpdate );
echo "<br>";
echo $mysqldate = '2013-09-01 17:51:00';
echo "<br>";
$datetime1 = new DateTime($mydate);
$datetime2 = new DateTime($mysqldate);
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y-%m-%d %H:%i:%s');
出力
2013-09-03 02:18:00
2013-09-01 17:51:00
00-0-1 08:27:0
わからない
0
レビュー
答え :
解決策:
これでうまくいきます
$phpdate = strtotime( $yourdate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
上記の例を試してみてください。
それでも日付を取得できない場合。次に、 '-'
で日付と時刻を分割し、再フォーマットする必要があります。
わからない
0
レビュー
答え :
解決策:
これは機能するはずです:
コード:
$dateF = '2013-09-01 17:51:00';
$dateT = '2013-9-3---02:18';
$dtF = new DateTime($dateF);
$dtT = DateTime::createFromFormat('Y n j H:i', str_replace('-', ' ', $dateT));
$dateF = '2013-09-01 17:51:00';
$dateT = '2013-9-3---02:18';
$dtF = new DateTime($dateF);
$dtT = DateTime::createFromFormat('Y n j H:i', str_replace('-', ' ', $dateT));
両方の日付がDateTime
オブジェクトに含まれるようになったため、これらを使用して何でもできるようになりました:
違いの例:
$diff = $dtF->diff($dtT);
print_r($diff);
/*
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 8
[i] => 27
[s] => 0
[invert] => 0
[days] => 1
)
*/
例を比較してください:
if ($dtF > $dtT) {
echo 'Datetime in variable $dtF is bigger than $dtT';
}
$diff = $dtF->diff($dtT);
print_r($diff);
/*
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 1
[h] => 8
[i] => 27
[s] => 0
[invert] => 0
[days] => 1
)
*/
if ($dtF > $dtT) {
echo 'Datetime in variable $dtF is bigger than $dtT';
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。