3

重複の可能性:
XXXの日付まで何日ですか?

現在、このコードを使用して、予定日までの残り日数を判別しています。しかし、このコードは予期しない結果を示しています。たとえば、$ last_dateが2012年12月26日の場合、次のようになります。0 day(s) left.ただし1 day(s) left.、問題は関数のみにあると思いfloor()ます。ではない?

 $timezone = "Asia/Dhaka";
 if(function_exists('date_default_timezone_set')) date_default_timezone_set($timezone);

 $now = time();
 $last_date = strtotime("$year-$month-$day");
 $datediff = $last_date - $now;
 $day_left=floor($datediff/(60*60*24));
 echo "$day_left day(s) left.";

N:B:私のタイムゾーンは+6 GMTです。つまり、アジア/ダッカです。

4

1 に答える 1

9

PHPのドキュメントによると:

<?php

$year = '2012';
$month = '12';
$day = '26';

$current_date = new DateTime(date('Y-m-d'), new DateTimeZone('Asia/Dhaka'));
$end_date = new DateTime("$year-$month-$day", new DateTimeZone('Asia/Dhaka'));
$interval = $current_date->diff($end_date);
echo $interval->format('%a day(s)');

?>
于 2012-12-25T01:07:20.713 に答える