Mungkin dan jawaban yang mudah untuk ini tetapi saya tidak dapat menemukan cara untuk mendapatkan moment.js untuk mengembalikan waktu tanggal UTC dalam milidetik. Inilah yang saya lakukan:
var date = $("#txt-date").val(),
expires = moment.utc(date);
Tahu apa yang saya lakukan salah?
javascript
momentjs
pengguna1956816
sumber
sumber
.utc()
.format()
, yang akan mengeluarkan nilai UTC. Itu tidak dapat mengubah nilai tanggal internal itu sendiri, karena aDate
sudah melacak stempel waktu UTC. Selalu hanya metode yang dipanggil yang menentukan apakah akan mengeluarkan UTC atau waktu lokal. Dalam hal itu, momennya sama.Saya menggunakan metode ini dan berhasil. ValueOf tidak bekerja untuk saya.
sumber
Sejak:
moment.js version 2.24.0
katakanlah Anda memiliki input tanggal lokal, ini adalah cara yang tepat untuk mengubah input dateTime atau Waktu Anda ke UTC :
var utcStart = new moment("09:00", "HH:mm").utc();
atau jika Anda menentukan tanggal
var utcStart = new moment("2019-06-24T09:00", "YYYY-MM-DDTHH:mm").utc();
Seperti yang Anda lihat, hasil keluaran akan dikembalikan dalam UTC:
//You can call the format() that will return your UTC date in a string utcStart.format(); //Result : 2019-06-24T13:00:00
Tetapi jika Anda melakukan ini seperti di bawah ini, itu tidak akan diubah menjadi UTC:
var myTime = new moment.utc("09:00", "HH:mm");
Anda hanya mengatur input Anda ke waktu utc, seolah-olah Anda menyebutkan bahwa myTime dalam UTC, .... outputnya adalah 9:00
sumber
adalah cara untuk pergi, sejak itu
bertingkah aneh ...
sumber
moment().utc(date).format(...)
?moment.utc(date)
adalah untuk mem - parsing filedate
. Yang keduamoment().utc(date)
adalah untuk memanipulasi waktu saat ini (moment()
) dandate
parameter tidak berguna karena ini.utc()
dalam kasus ini tidak mengharapkan parameter apa pun.Ini berhasil untuk saya. Orang lain mungkin menganggapnya berguna.
// date = 2020-08-31T00: 00: 00Z Saya berada di Denmark (zona waktu +2 jam)
moment.utc (moment (date) .utc ()). format () // mengembalikan 2020-08-30T22: 00: 00Z
sumber
Jika semuanya gagal, cukup lakukan inisialisasi ulang dengan kebalikan dari offset lokal Anda.
var timestamp = new Date(); var inverseOffset = moment(timestamp).utcOffset() * -1; timestamp = moment().utcOffset( inverseOffset ); timestamp.toISOString(); // This should give you the accurate UTC equivalent.
sumber
keepOffset
parameter ke true, seperti dalammoment(timestamp).toISOString(true)
,di sini, saya meneruskan objek tanggal dan mengubahnya menjadi waktu 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);
sumber
Inilah jawabannya:
localdate = '2020-01-01 12:00:00' moment(localdate) //Moment<2020-01-01T12:00:00+08:00> moment.utc(moment(localdate)).format() //2020-01-01T04:00:00Z
sumber
Baca dokumentasi moment.js di sini . Lihat contoh dan keluaran di bawah ini di mana saya mengonversi waktu GMT ke waktu lokal (zona saya adalah IST) dan kemudian saya mengonversi waktu lokal ke GMT.
// convert GMT to local time console.log('Server time:' + data[i].locationServerTime) let serv_utc = moment.utc(data[i].locationServerTime, "YYYY-MM-DD HH:mm:ss").toDate(); console.log('serv_utc:' + serv_utc) data[i].locationServerTime = moment(serv_utc,"YYYY-MM-DD HH:mm:ss").tz(self.zone_name).format("YYYY-MM-DD HH:mm:ss"); console.log('Converted to local time:' + data[i].locationServerTime) // convert local time to GMT console.log('local time:' + data[i].locationServerTime) let serv_utc = moment(data[i].locationServerTime, "YYYY-MM-DD HH:mm:ss").toDate(); console.log('serv_utc:' + serv_utc) data[i].locationServerTime = moment.utc(serv_utc,"YYYY-MM-DD HH:mm:ss").format("YYYY-MM-DD HH:mm:ss"); console.log('Converted to server time:' + data[i].locationServerTime)
Outputnya adalah
Server time:2019-12-19 09:28:13 serv_utc:Thu Dec 19 2019 14:58:13 GMT+0530 (India Standard Time) Converted to local time:2019-12-19 14:58:13 local time:2019-12-19 14:58:13 serv_utc:Thu Dec 19 2019 14:58:13 GMT+0530 (India Standard Time) Converted to server time:2019-12-19 09:28:13
sumber
Tidakkah Anda memerlukan sesuatu untuk dibandingkan dan kemudian mengambil milidetik?
Contohnya:
let enteredDate = $("#txt-date").val(); // get the date entered in the input let expires = moment.utc(enteredDate); // convert it into UTC
Dengan itu Anda memiliki tanggal kedaluwarsa dalam UTC. Sekarang Anda bisa mendapatkan tanggal "sekarang" di UTC dan bandingkan:
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();
sumber
moment.valueOf()
dan(new Date()).getTime()
kedua pengembalian milidetik sejak 1 Januari 1970 UTC (itu standar)