首先,我一直在掙扎兩天,不停地弄清楚我用這段代碼需要什麼東西,而且仍然停留在方塊中。PHP中的DateTime返回錯誤的值?
所以在這裏,我再次和我希望有人在這個問題上闡明我的頭正在爆炸。
我需要做的是在PHP中使用DateTime獲取兩個值之間的差異。
第一個值是00:00,這是一個設定值,永遠不會改變。
第二個值是$ offset/3600 * 1,它是兩個時區之間的時間差。
我使用的代碼是這樣的:
<?php
if (0 > $offset)
{
// set an object with the current date
$date = new DateTime();
$date->setTime(00, 00);
// the second date
$date2 = new DateTime($offset/3600 * 1);
// apply the diff() method, getting a DateInterval object ($diDiff)
$diDiff = $date->diff($date2) ;
}
echo $diDiff->format("H:i");
?>
上述回聲的代碼如下:H:i
沒有別的!
我在做什麼錯?
在此先感謝。
編輯:
的$抵消來自這裏:
if(isset($_POST['submit']))
{
//be sure to validate and clean your variables
$timezone1 = htmlentities($_POST['timezone1']);
$timezone2 = htmlentities($_POST['timezone2']);
//then you can use them in a PHP function.
function get_timezone_offset($origin_tz, $remote_tz) {
$timezone1 = new DateTimeZone($origin_tz);
$timezone2 = new DateTimeZone($remote_tz);
$datetime1 = new DateTime("now", $timezone1);
$datetime2 = new DateTime("now", $timezone2);
$offset = $timezone1->getOffset($datetime1) - $timezone2->getOffset($datetime2);
return $offset;
}
$offset = get_timezone_offset($timezone1, $timezone2);
}
?>
timezone1和timezone2是,裏面還PHP時區的兩個下拉列表,它們是相同的。
像這樣:
<select name="timezone2" id="timezone2" class="timezone2">
<?php
foreach($options as $key => $value)
{
echo '<option value="'. $key .'" label="'. $value .'">'.$value.'</option>';
}
?>
<option value="Africa/Abidjan" label="Abidjan">Abidjan</option>
<option value="Africa/Accra" label="Accra">Accra</option>
<option value="Africa/Addis_Ababa" label="Addis Ababa">Addis Ababa</option>
<option value="Africa/Algiers" label="Algiers">Algiers</option>
<option value="Africa/Asmara" label="Asmara">Asmara</option>
</select>
你在哪裏設置$ offset? – Tchoupi
$ offset設置在頁面頂部,當用戶選擇兩個位置/時區時。 –
首先,你有'if(0> $ offset)',你的意思是檢查'零是否大於$ offset'? – Jason