web-dev-qa-db-ja.com

moment.jsを使用して日付をUTCに変換する

これに対するおそらく簡単な答えですが、moment.jsがUTC日時をミリ秒単位で返す方法を見つけることができないようです。ここに私がやっていることがあります:

var date = $("#txt-date").val(),
    expires = moment.utc(date);

私が間違っていることを知っていますか?

58
user1956816

これは ドキュメント内 にあります。ライブラリのような瞬間があれば、ドキュメント全体を読むことをお勧めします。それは本当に重要です。

入力テキストがユーザーの現地時間で入力されると仮定します。

 var expires = moment(date).valueOf();

ユーザーが実際にUTCの日付/時刻を入力するように指示された場合、次のようになります。

 var expires = moment.utc(date).valueOf();
77

私はこの方法を使用して動作します。 ValueOfは機能しません。

moment.utc(yourDate).format()
31
Bruno Quaresma

現在:moment.js version 2.24.0

ローカルの日付入力があるとしましょう。これが適切な方法ですdateTimeまたはTime入力をUTC

var utcStart = new moment("09:00", "HH:mm").utc();

または、日付を指定する場合

var utcStart = new moment("2019-06-24T09:00", "YYYY-MM-DDTHH:mm").utc();

ご覧のとおり、結果出力はUTCで返されます。

//You can call the format() that will return your UTC date in a string 
 utcStart.format(); 
//Result : 2019-06-24T13:00:00 

しかし、以下のようにこれを行うと、しません UTCに変換します:

var myTime = new moment.utc("09:00", "HH:mm"); 

入力をUTC時間に設定しているだけで、myTimeがUTCであると言及しているように、出力は9:00になります

4
napi15
moment.utc(date).format(...); 

行く方法です

moment().utc(date).format(...);

奇妙な動作をします...

3
Florian S

ここでは、日付オブジェクトを渡し、UTC時間に変換しています。

$.fn.convertTimeToUTC = function (convertTime) {
   if($(this).isObject(convertTime)) {
        return moment.tz(convertTime.format("Y-MM-DD HH:mm:ss"), moment.tz.guess()).utc().format("Y-MM-DD HH:mm:ss");
    }
};
// Returns if a value is an object
$.fn.isObject =  function(value) {
    return value && typeof value === 'object';
};


//you can call it as below
$(this).convertTimeToUTC(date);
1
Invincible

他のすべてが失敗した場合は、ローカルオフセットの逆数で再初期化するだけです。

var timestamp = new Date();
var inverseOffset = moment(timestamp).utcOffset() * -1;
timestamp = moment().utcOffset( inverseOffset  );

timestamp.toISOString(); // This should give you the accurate UTC equivalent.
1
Timothy Perez

ミリ秒を比較して取得するものは必要ありませんか?

例えば:

let enteredDate = $("#txt-date").val(); // get the date entered in the input
let expires = moment.utc(enteredDate); // convert it into UTC

これにより、有効期限はUTCになります。これで、UTCで「今すぐ」の日付を取得して比較できます。

var rightNowUTC = moment.utc(); // get this moment in UTC based on browser
let duration = moment.duration(rightNowUTC.diff(expires)); // get the diff
let remainingTimeInMls = duration.asMilliseconds();
0
ron.camaron