347

私は今これと少し戦っています。エポックを日付オブジェクトに変換しようとしています。エポックは UTC で送信されます。エポックを渡すたびにnew Date()、ローカル エポックであると見なされます。UTC オブジェクトを作成してから、それを使用setTime()して適切なエポックに調整しようとしましたが、有用と思われる唯一の方法はtoUTCString()文字列ではありません。その文字列を新しい日付に渡すと、それが UTC であることに気付くはずですが、そうではありません。

new Date( new Date().toUTCString() ).toLocaleString()

私の次の試みは、ローカルの現在のエポックと UTC の現在のエポックの違いを取得しようとすることでしたが、それも取得できませんでした。

new Date( new Date().toUTCString() ).getTime() - new Date().getTime()

ミリ秒単位の1000未満の非常に小さな違いしか得られません。

助言がありますか?

4

16 に答える 16

578

もっと簡単な解決策があると思います-最初の日付をエポックに設定し、UTC 単位を追加します。UTC エポック変数が秒単位で保存されているとします。どうですか1234567890。それをローカルタイムゾーンの適切な日付に変換するには:

var utcSeconds = 1234567890;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCSeconds(utcSeconds);

dは現在、(私のタイムゾーンで) に設定されている日付ですFri Feb 13 2009 18:31:30 GMT-0500 (EST)

于 2011-11-04T22:00:33.497 に答える
309

簡単です。new Date()数ミリ秒しかかかりません。

new Date(1394104654000)
> Thu Mar 06 2014 06:17:34 GMT-0500 (EST)
于 2014-03-06T22:09:46.050 に答える
35

ログについては、とにかく書式設定に使用していたMoment.jsライブラリを使用してこれを行いました。

moment.utc(1234567890000).local()
>Fri Feb 13 2009 19:01:30 GMT-0430 (VET)
于 2012-10-19T19:10:02.887 に答える
30

エポック時間は1970 年 1 月 1 日からの秒数です。 は 1970 年 1 月 1 日からのミリ秒date.getTime()を返します。エポック タイムスタンプがある場合は、1000 を掛けて JavaScript タイムスタンプに変換します。

   function epochToJsDate(ts){
        // ts = epoch timestamp
        // returns date obj
        return new Date(ts*1000);
   }

   function jsDateToEpoch(d){
        // d = javascript date obj
        // returns epoch timestamp
        return (d.getTime()-d.getMilliseconds())/1000;
   }
于 2012-09-09T20:55:56.860 に答える
16
 function ToLocalDate (inDate) {
    var date = new Date();
    date.setTime(inDate.valueOf() - 60000 * inDate.getTimezoneOffset());
    return date;
}
于 2012-01-27T20:36:55.090 に答える
5

var myDate = new Date( your epoch date *1000);

ソース - https://www.epochconverter.com/programming/#javascript

于 2020-01-27T09:51:41.700 に答える
3

UTC 文字列を「ローカル」文字列に変換するよう求めているだけですか? あなたがすることができます:

var utc_string = '2011-09-05 20:05:15';
var local_string = (function(dtstr) {
    var t0 = new Date(dtstr);
    var t1 = Date.parse(t0.toUTCString().replace('GMT', ''));
    var t2 = (2 * t0) - t1;
    return new Date(t2).toString();
})(utc_string);
于 2011-09-06T00:06:14.640 に答える
2

編集

var utcDate = new Date(incomingUTCepoch);
var date = new Date();
date.setUTCDate(utcDate.getDate());
date.setUTCHours(utcDate.getHours());
date.setUTCMonth(utcDate.getMonth());
date.setUTCMinutes(utcDate.getMinutes());
date.setUTCSeconds(utcDate.getSeconds());
date.setUTCMilliseconds(utcDate.getMilliseconds());

編集修正

于 2011-01-08T02:04:16.227 に答える
0

@Amjad、良いアイデアですが、より良い実装は次のようになります。

Date.prototype.setUTCTime = function(UTCTimestamp) {
    var UTCDate = new Date(UTCTimestamp);
    this.setUTCFullYear(UTCDate.getFullYear(), UTCDate.getMonth(), UTCDate.getDate());
    this.setUTCHours(UTCDate.getHours(), UTCDate.getMinutes(), UTCDate.getSeconds(), UTCDate.getMilliseconds());
    return this.getTime();
}
于 2011-09-28T05:54:08.563 に答える