<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 以下部分與文章內容無關</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"歡迎閱讀本篇文章!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 文章正文開始</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>timezone_open 搭配 strtotime 使用時,處理時區的正確方法是什麼?看這裡</h1>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>在 PHP 中處理日期和時間時,<code>strtotime()
' ; echo "這將創建一個表示上海時區的對象。
" ; echo ""當你直接使用strtotime()時,它會使用默認時區,通常由date_default_timezone_get()返回,或者在php.ini 中的date.timezone設置決定。如果你的日期字符串沒有明確的時區信息,那麼strtotime()將按照默認時區解析。
" ; echo "要正確處理時區,可以先創建一個DateTime對象,指定時區,然後再通過getTimestamp()得到Unix 時間戳。例如:
" ; echo '$timeString = "2025-08-26 14:30:00"; $tz = timezone_open("Asia/Shanghai"); $date = new DateTime($timeString, $tz); $timestamp = $date->getTimestamp(); echo $timestamp;' ; echo "
這樣無論你的服務器默認時區是什麼,都會得到正確的上海時間對應的Unix 時間戳。
" ; echo "如果你只是臨時想讓strtotime()按某個時區解析,也可以先修改默認時區:
" ; echo 'date_default_timezone_set("Asia/Shanghai"); $timestamp = strtotime("2025-08-26 14:30:00"); echo $timestamp;' ; echo "
這種方法簡單,但會影響全局默認時區,因此在大型項目中更推薦使用DateTime搭配DateTimeZone的方式。
" ; echo "1. strtotime()默認使用服務器或全局默認時區。
" ; echo "2. 使用timezone_open()或DateTimeZone創建時區對象,然後配合DateTime ,可以精準處理指定時區的日期時間。
" ; echo "3. 臨時改變默認時區也可以解決問題,但可能影響全局環境。
" ; echo "掌握這幾種方法,你就能在PHP 中正確、安全地處理跨時區日期和時間了。
" ; ?>