0

JavaScript で UTC の日付を作成しようとしていますが、時間と分を指定してタイムスタンプを取得しています。

たとえば、時が 15 で分が 25 の場合、次のようにします。

var to_date = new Date();
to_date.setUTCHours(15);
to_date.setUTCMinutes(25);
var to_utc = new Date(to_date.getUTCFullYear(), 
              to_date.getUTCMonth(), 
              to_date.getUTCDate(), 
              to_date.getUTCHours(), 
              to_date.getUTCMinutes(), 
              to_date.getUTCSeconds());
var to_unix = Math.round(to_utc.getTime() / 1000);
console.log(to_unix);

問題は、これが正しいタイムスタンプを返していないように見えることです。UTCではなく、タイムゾーンの時間を設定しています。これをUTCで維持する方法はありますか?

また、現在の時刻を過ぎている場合は、時刻に 1 日追加したいと考えています。現在と照合して を追加しようとしました60*60*24が、指定したものと一致しない分/時間が返されました。

どんな助けでも素晴らしいでしょう!

ありがとうございました

4

3 に答える 3

5

既存の日付オブジェクトをいじっている場合:

var d = new Date();
d.setUTCHours(15);
d.setUTCMinutes(25);
d.setUTCSeconds(0);

dは、今日の 15:25 UTC を表します。

ゼロから始める場合:

var d = new Date(Date.UTC(year, jsmonth, day, utchour, utcminute, utcsecond));

UNIX タイムスタンプを取得するにはgetTime、エポック UTC からのミリ秒数を返す を使用し、1000 で割って UNIX 時間 (ミリではなく秒単位)に変換します。

Math.round(d.getTime() / 1000);

Date.now()エポック以降のミリ秒単位の現在時刻を UTC で表示します。日を追加して、それが未来かどうかを確認するには:

d.getTime() + (1000*60*60*24) > Date.now()
于 2012-09-13T19:24:25.943 に答える
1

コードを使用して次のDEMOを試してください。

タイムゾーンを取り除くには、 を使用to_date.setHours(0,0,0,0);して時刻を00:00:00:00

于 2012-09-13T19:11:41.973 に答える
1

フォームリンク: getTimezoneOffset() メソッドは、UTC 時間と現地時間の時差を分単位で返します。以下はあなたの問題を解決するはずです

var to_unix = Math.round( (Date.now() + (new Date().getTimezoneOffset()) )  / 1000);
console.log(to_unix);

jsfiddle

于 2012-09-13T19:31:23.703 に答える