まず、これは特定の日の午後6時からのイベントである場合、私は時間を開始し、そのイベントの正確なタイムスタンプまたはUTC時間になるだろう。以下、私は偽のタイムスタンプを使用しています。
イベントを視聴しているユーザーが、「今」(上で使用している)とイベントの日の午後6時の間で、ESTからDSTに変更できるため、これは重要です。
すでにカウントダウンが動作しているように聞こえますが、タイムゾーンの問題だけでカウントダウンロジックをスキップします。カウントダウンのために
const moment = require('moment-timezone');
// Get User's Timezone
const userTimezone = moment.tz.guess(); // this has to be on the client not server
const serverTimezone = "America/New_York";
// Get the exact timestamp of the event date apply the server timezone to it.
const serverEventTime = moment(34534534534, 'x').tz(serverTimezone);
// Take the server time and convert it to the users time
const userEventTime = serverEventTime.clone().tz(userTimezone);
// From here you can format the time however you want
const formattedUserEventTime = userEventTime.format('YYYY-MM-DD HH:mm:ss');
// Or format to a timestamp
const userEventTimestamp = userEventTime.format('x');
あなたは上記と同じロジックに続く、同様に今の時間をお勧めします:
const serverTimeNow = moment().tz(serverTimezone);
const userTimeNow = serverTimeNow.clone().tz(userTimezone);
// Get timestamp so we can do easier math with the time
const userNowTimestamp = userTimeNow.format('x');
今、私たちがしなければならないのは、今の時間イベント時間からの減算であります違いを得て、毎秒setInterval()を使って繰り返してください。
const millisecondsToEvent = userEventTimestamp - userNowtimestamp;
const secondsToEvent = millisecondsToEvent/1000;
うまくいけば、それは誰かにとって役に立ちます(ちょうどこれが2歳だったことに気付きました)。
カウントダウンの場合は、「このイベントまで残っている秒数をサーバーに伝えています」と言っているので、ここでタイムゾーンを考慮する必要はないと思っています。サーバーが「シャトル打ち上げに10分"それはロンドンや東京の誰かがカナリア島の貧しいチャーリーと同じくらいになるだろう。サーバーがイベントに絶対ダニを返すようにすればいいよ。 – Viney
@Novice本当に申し訳ありません。カウンターがうまくいけば、私は質問をうんざりしました。午後6時には、残りの秒数に基づいてメッセージを表示する必要がありますので、タイムゾーンで時間を秒単位で追加/減算するにはどうすればよいですか? – sayayin
あなたのタイムゾーンを得ることができれば簡単な問題のように見えますが、問題はTですDSTのための帽子、タイムゾーンのオフセットは年間を通して一定ではありません。私は手動計算のために行ってはいけないことを示唆していますmoment.jsは[** this **](http:// stackoverflow。 com/questions/29265389/how-do-i-calculate-the-difference-of-2-time-zones-in-javascript)は、詳細を記述し、シンプルで効果的なソリューションを提供します。 – Viney