亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

倒計時與 PHP 的 Javascript 錯誤計算

倒計時與 PHP 的 Javascript 錯誤計算

PHP
溫溫醬 2023-03-11 15:29:47
我正在嘗試制作倒數計時器。我正在使用 PHP 和 Javascript。我面臨的問題是時差顯示比 php 晚了一段時間。如果 PHP 顯示 19 小時,則 Javascript 顯示 16 小時。我的函數顯示與 PHP 的時差$timestamp = strtotime($time['expiration']) - time();function convert_timestamp_to_date($timestamp){  $date1 = new DateTime("@0");  $date2 = new DateTime("@$timestamp");  if ($date1->diff($date2)->d < 1) {    return $date1->diff($date2)->format('%h Hours');  } else {    return $date1->diff($date2)->format('%a Days');  }}我的函數用 Javascript 顯示時差// $job['job_expiration'] = 2020-05-13 15:24:22function countdownTimer() {    const difference = +new Date("<?php echo $job['job_expiration']; ?>") - +new Date();    let remaining = "Time's up!";    if (difference > 0) {        const parts = {            days: Math.floor(difference / (1000 * 60 * 60 * 24)),            hours: Math.floor((difference / (1000 * 60 * 60)) % 24),            minutes: Math.floor((difference / 1000 / 60) % 60),            seconds: Math.floor((difference / 1000) % 60)        };        remaining = Object.keys(parts)            .map(part => {                if (!parts[part]) return;                return `${parts[part]} ${part}`;            })            .join(" ");    }    document.getElementById("countdown").innerHTML = remaining;}countdownTimer();setInterval(countdownTimer, 1000);
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

它看起來像一個時區差異問題。

如果您在 中輸入類似“2020-05-13 15:24:22”的字符串Date(),它會假定該字符串在計算機的時區內。

例如,我的電腦處于太平洋夏令時 (GMT - 7) 時區:

let date1 = new Date("2020-05-13 10:56:50");
console.log(date1); // '2020-05-13T17:56:50.000Z'

請注意,Date7 小時后將我的太平洋夏令時轉換為 UTC。

如果您只是簡單地調用Date()而不帶任何參數,您將獲得 UTC 時區的當前日期和時間:

let date2 = new Date();
console.log(date2); // '2020-05-12T17:57:36.088Z'

從示例中很難確定,但很可能是 PHP 時間:

<?php echo $job['job_expiration']; ?>

在服務器的時區中,但 JavaScript 在具有不同時區的客戶端計算機上運行。

關于處理時區的建議

避免弄亂時區的一個好規則是始終以 UTC 格式存儲和操作日期,然后將它們轉換為本地時間僅用于顯示。

如果您使用字符串作為 的參數new Date,請確保該字符串采用 UTC 時間:

let date = new Date('2020-05-12T17:56:50.000Z');

尾隨的“Z”表示此日期字符串處于 UTC(“zulu”)時區。


查看完整回答
反對 回復 2023-03-11
  • 1 回答
  • 0 關注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號