Pertanyaan mengatur zona waktu global dengan momentjs


Saya menggunakan momentjs untuk menangani tanggal di aplikasi web saya. Server mengembalikan semua tanggal dalam milidetik UTC. Sekarang saya harus menampilkan tanggal yang menerapkan zona waktu tertentu (berdasarkan pengaturan pengguna).

Apakah ada cara untuk mengatur zona waktu secara global alih-alih mengubah semua panggilan ke momentjs untuk menanganinya?


32
2017-07-17 10:45


asal


Jawaban:


Kamu bisa mengatur zona waktu default di Moment dengan menggunakan:

moment.tz.setDefault(String);

Sebagai contoh

moment.tz.setDefault("America/New_York");

38
2018-03-24 09:37



Gunakan pustaka time-timezone yang ditemukan di situs web yang sama: http://momentjs.com/timezone/ Ini memungkinkan Anda melakukan hal-hal seperti:

moment(utcDateTime).tz(settings.timezone).format(settings.dateFormat);

Saya merekomendasikan menerapkan kelas / objek pengguna yang memiliki fungsi layanan untuk menerjemahkan UTC ke zona waktu pengguna. Silahkan lihat biola ini:

http://jsfiddle.net/guidosch/ofd4unhu/4/

Tanggal disajikan sebagai UTC, tetapi tampilan menggunakan metode pemformatan tanggal dari kelas pengguna untuk menyesuaikan dan memformat tanggal UTC sesuai dengan preferensi pengguna.


1
2017-12-12 15:42



Saya belum melakukan pengujian ekstensif, tetapi tampaknya benar pada tes sepintas. Saya bisa melakukan ini dengan Moment Timezone 0.0.1:

var serverTimezoneOffset = <?php echo timezone_offset_get(new DateTimeZone(date_default_timezone_get()), new DateTime('now')) / -60; ?>;
moment.updateOffset(new Date().getTimezoneOffset()-serverTimezoneOffset);

-5
2018-03-15 04:32



Setelah mengalami masalah ini di masa lalu, solusi saya adalah membuat pabrik momen yang menyediakan objek momen untuk konfigurasi dasar. Anda dapat membuatnya sebagai transparan seperti membutuhkan waktu - referensi paket Anda dan menggunakan kelas seperti saat - tetapi dalam kenyataannya Anda memanggil objek pembungkus saat yang menyediakan implementasi saat dengan zona waktu yang dipilih.


-5
2017-11-28 04:29