<p>moment.tz.setDefault() bersifat global dan dibagikan oleh semua modul.</p>

Dibuat pada 7 Feb 2017  ·  11Komentar  ·  Sumber: moment/moment

Zona waktu default dibagi di antara semua modul:

server.js

var moment = require('moment-timezone');
console.log('sets timezone to Europe/Stockholm and locale to sv');
moment.tz.setDefault('Europe/Stockholm');
moment.locale('sv');

var moduleA = require('./moduleA');
var moduleB = require('./moduleB');

modulA.js

var moment = require('moment-timezone');

setInterval(function () {
  console.log('Moment in moduleA', moment().format('MMMM Do YYYY, h:mm:ss a'));
}, 100)

modulB.js

var moment = require('moment-timezone');

setInterval(function () {
  console.log('Moment in moduleB', moment().format('MMMM Do YYYY, h:mm:ss a'));
}, 100)

setInterval(function () {
  console.log('Changing timezone in moduleB  America/New_York locale en');
  moment.tz.setDefault("America/New_York");
  moment.locale('en');
}, 3000);

Keluaran setelah 3 detik:

Moment in moduleA februari 8e 2017, 9:09:19 am Moment in moduleB februari 8e 2017, 9:09:19 am Moment in moduleA februari 8e 2017, 9:09:19 am Moment in moduleB februari 8e 2017, 9:09:19 am Changing timezone in moduleB America/New_York locale en Moment in moduleA February 8th 2017, 3:09:19 am Moment in moduleB February 8th 2017, 3:09:19 am Moment in moduleA February 8th 2017, 3:09:19 am

Documentation Loading Timezones Up-For-Grabs

Komentar yang paling membantu

Bagaimana tepatnya #684 memperbaiki masalah ini? Ini hanya pembaruan readme untuk mengklarifikasi perilaku saat ini sejauh yang saya bisa lihat.

Semua 11 komentar

Lingkungan apa ini?

Node 4.7.3, ubuntu 14.04

Saya pikir kita harus menambahkan peringatan tentang ini di dokumen dan tidak merekomendasikan pengembang untuk tidak menggunakan fungsi ini di sistem seperti node.js.
http://momentjs.com/timezone/docs/#/using -timezones/default-timezone/

Sesuatu seperti ini:
https://github.com/mashpie/i18n-node#example -usage-in-global-scope

moment.tz.setDefault() jelas merupakan metode konfigurasi global untuk modul moment.tz

Tidak yakin apakah itu benar yang membutuhkan di simpul hanya mengimpor modul moment.timezone hanya sekali, bukan beberapa kali. Jika itu benar, maka output contoh diharapkan.

@alburthoffman Ya itu adalah output yang diharapkan, tetapi saya pikir banyak orang bisa mendapatkan masalah dengan ini di lingkungan simpul ketika modul jauh di bawah dalam daftar ketergantungan dapat melakukan sesuatu dengan setDefault dan itu akan berdampak pada semua modul yang membutuhkan (' zona waktu-saat'). Saya menghabiskan banyak waktu sebelum saya melakukannya dengan benar.

Jika kalian setuju dapatkah kami menambahkan info-teks seperti ini: https://github.com/mashpie/i18n-node#example -usage-in-global-scope tetapi kami juga dapat menutup masalah ini jika itu bukan bug .

Akan sangat bagus jika kita bisa memiliki sesuatu seperti ini:

const momentFoo = require('moment-timezone').instance();
momentFoo.tz.setDefault('foo');

const momentBar = require('moment-timezone').instance();
momentBar.tz.setDefault('bar');

momentFoo.tz() === momentBar.tz() //false

Dan untuk setiap instans memiliki konfigurasi lokalnya sendiri.

Ini juga bagus untuk aplikasi yang menggunakan Express, di mana Anda kemudian dapat membuat instans momen selama durasi permintaan, mengonfigurasinya dengan zona waktu global, dan yakinlah bahwa semua middleware Anda lainnya akan menggunakan zona waktu yang benar.

Saat ini, kita harus menetapkan zona waktu yang benar secara harfiah di 100+ tempat di basis kode kita, karena kita tidak dapat menggunakan moment.tz.setDefault() .

Pikiran?

Anda bisa melakukannya

import moment from 'moment-timezone';
export default moment().tz('foo');
import momentFoo from '../somewhere/moment-foo';

@isair itu tidak cukup berhasil:

Uncaught TypeError: Object(...) is not a function

Tentu, kami akan mengambil PR dokumentasi di https://github.com/moment/momentjs.com

@adamreisnz - silakan ajukan tiket untuk permintaan fitur Anda di https://github.com/moment/moment-timezone

Bagaimana tepatnya #684 memperbaiki masalah ini? Ini hanya pembaruan readme untuk mengklarifikasi perilaku saat ini sejauh yang saya bisa lihat.

Bagaimana dengan ini?

const estMoment = (...args) => moment(...args).tz('America/New_York')

console.log(estMoment().toDate())
console.log(moment().toDate())

Alih-alih mengatur default; kita dapat memiliki moment untuk berbagai zona waktu (Misalnya estMoment , mstMoment , pstMoment , dll) dan menggunakannya di mana-mana. Untuk ex estMoment('2020-08-12'); bukannya moment('2020-08-12');

Semoga beruntung...

Apakah halaman ini membantu?
0 / 5 - 0 peringkat