Đã xem xét xung quanh rất nhiều bao gồm các liên kết từ trang này, tôi đã tìm thấy bài viết tuyệt vời này, sử dụng mốc m vì thời gian:
//www.webniraj.com/2016/11/23/javascript-using-moment-js-to-display-dates-times-in-users-timezone/
Để tóm tắt nó:
Nhận múi giờ của người dùng
var tz = moment.tz.guess[];
console.info['Timezone: ' + tz];
Returns EG: Timezone: Châu Âu/London
Đặt múi giờ người dùng mặc định
moment.tz.setDefault[tz];
Đặt thời gian tùy chỉnh
moment.tz.setDefault['America/Los_Angeles'];
Chuyển đổi ngày / thời gian sang thời gian địa phương, giả sử ngày / giờ ban đầu ở UTC
moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
Returns: Sun, ngày 25 tháng 12 năm 2016, 7:00 sáng
Chuyển đổi ngày/giờ thành thời gian LA
moment.utc['2016-12-25 07:00'].tz['America/Los_Angeles'].format['ddd, Do MMMM YYYY, h:mma'];
Trả lại: Thứ bảy, ngày 24 tháng 12 năm 2016, 11:00 tối
Chuyển đổi từ LA Time sang London
moment.tz['2016-12-25 07:00', 'America/Los_Angeles'].tz['Europe/London'].format[ 'ddd, Do MMMM YYYY, h:mma' ];
Returns: Sun, ngày 25 tháng 12 năm 2016, 3:00 chiều
Chuyển đổi ngày thành múi giờ khác bằng JavaScript #
Để chuyển đổi ngày thành múi giờ khác:
- Sử dụng phương thức
0 để có được một chuỗi đại diện cho ngày theo múi giờ được cung cấp.moment.tz.setDefault[tz];
- Chuyển kết quả cho hàm tạo
1.moment.tz.setDefault[tz];
- Đối tượng
2 đã trả lại sẽ có ngày và thời gian được đặt theo múi giờ được cung cấp.moment.tz.setDefault[tz];
Copied!
function changeTimeZone[date, timeZone] { if [typeof date === 'string'] { return new Date[ new Date[date].toLocaleString['en-US', { timeZone, }], ]; } return new Date[ date.toLocaleString['en-US', { timeZone, }], ]; } const laDate = changeTimeZone[new Date[], 'America/Los_Angeles']; console.log[laDate]; // 👉️ "Sun Jan 16 2022 01:22:07" const berlinDate = changeTimeZone[new Date[], 'Europe/Berlin']; console.log[berlinDate]; // 👉️ "Sun Jan 16 2022 10:22:07"
Phương thức Tolocalestring trả về một chuỗi dành riêng cho địa phương được điều chỉnh theo múi giờ được cung cấp.
Hàm
moment.tz.setDefault[tz];
3 có thể được truyền một chuỗi ngày hoặc đối tượng moment.tz.setDefault[tz];
2 và trả về một đối tượng moment.tz.setDefault[tz];
2 với ngày và thời gian tương ứng với múi giờ được cung cấp.Hai tham số chúng tôi đã chuyển sang phương thức
moment.tz.setDefault[tz];
6 là:
7 - Một chuỗi có thẻ ngôn ngữ BCP 47 hoặc một mảng các chuỗi đó. Bạn có thể sử dụng bất kỳ địa phương nào có sẵn, ví dụ:moment.tz.setDefault[tz];
8 cho Mexico hoặcmoment.tz.setDefault[tz];
9 cho Canada. Nếu bạn cần thêm thông tin về tham số này, hãy xem các tài liệu MDN.moment.tz.setDefault[tz];
- Đối tượng
0 nơi chúng tôi đã chỉ định thuộc tínhmoment.tz.setDefault['America/Los_Angeles'];
1. Đọc thêm về đối tượngmoment.tz.setDefault['America/Los_Angeles'];
0 trong tài liệu MDN.moment.tz.setDefault['America/Los_Angeles'];
Bạn có thể tìm thấy một bảng của mã quốc gia và tên cơ sở dữ liệu múi giờ bằng cách truy cập trang wikipedia này.
Tuy nhiên, lưu ý rằng đối tượng
2 trong JavaScript không lưu trữ múi giờ.moment.tz.setDefault[tz];
Nó lưu trữ một dấu thời gian đại diện cho số mili giây đã trôi qua kể từ nửa đêm ngày 1 tháng 1 năm 1970.
Ngày và thời gian của đối tượng
moment.tz.setDefault[tz];
2 tương ứng với múi giờ, tuy nhiên đối tượng moment.tz.setDefault[tz];
2 không có cách nào để lưu trữ múi giờ cụ thể.Vì lý do này, tốt nhất là sử dụng phương thức
6 để có được một chuỗi đại diện cho múi giờ và sử dụng tham số đối tượng moment.tz.setDefault[tz];
0 để định dạng chuỗi theo nhu cầu của bạn.moment.tz.setDefault['America/Los_Angeles'];
Bạn có thể sử dụng các thuộc tính khác nhau trên đối tượng
moment.tz.setDefault['America/Los_Angeles'];
0 của phương thức moment.tz.setDefault[tz];
6 để định dạng ngày và thời gian cho múi giờ cụ thể theo các cách khác nhau.Copied!
const date = new Date[]; console.log[ date.toLocaleString['en-US', { timeZone: 'America/New_York', dateStyle: 'full', timeStyle: 'full', }], ]; // 👉️ "Sunday, January 16, 2022 at 4:42:40 AM Eastern Standard Time"
Chúng tôi đặt các thuộc tính
moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
0 và moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
1 trong đối tượng moment.tz.setDefault['America/Los_Angeles'];
0 thành moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
3 để có thêm biểu diễn dài dòng của ngày và giờ.Các giá trị có thể khác cho hai thuộc tính là:
moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
4, moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
5 và moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
6.Copied!
const date = new Date[]; console.log[ date.toLocaleString['en-US', { timeZone: 'America/New_York', dateStyle: 'short', timeStyle: 'short', }], ]; // 👉️ "1/16/22, 4:43 AM"
Bạn có thể xem tất cả các thuộc tính và giá trị mà đối tượng
moment.tz.setDefault['America/Los_Angeles'];
0 thực hiện bằng cách truy cập các tài liệu MDN.Dưới đây là một ví dụ hiển thị tháng, ngày, giờ, phút và giây dưới dạng 2 chữ số, ngay cả khi giá trị của chúng nhỏ hơn
moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
8.Copied!
const date = new Date[]; console.log[ date.toLocaleString['en-US', { timeZone: 'America/New_York', year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', timeZoneName: 'short', }], ]; // 👉️ "01/16/2022, 04:43:39 AM EST"
Bằng cách đặt các giá trị của các thành phần ngày và thời gian thành
9 chữ số, chúng tôi định dạng chúng một cách nhất quán, ngay cả khi chúng có giá trị nhỏ hơn moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
8.moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
Nếu đó là trường hợp, các giá trị được đệm bằng số 0 hàng đầu.
Chúng tôi cũng đặt thuộc tính
moment.utc['2016-12-25 07:00'].tz['America/Los_Angeles'].format['ddd, Do MMMM YYYY, h:mma'];
1 thành giá trị moment.utc['2016-12-25 07:00'].tz[tz].format['ddd, Do MMMM YYYY, h:mma'];
6, để hiển thị chữ viết tắt của tên múi giờ ở cuối kết quả.Bạn có thể xem tất cả các thuộc tính khác mà đối tượng
moment.tz.setDefault['America/Los_Angeles'];
0 hỗ trợ bằng cách truy cập các tài liệu MDN.Bạn có thể nhận được một biểu diễn ngày và thời gian cụ thể của múi giờ được định dạng theo nhiều cách khác nhau chỉ bằng cách sử dụng phương pháp
6 và đây phải là cách tiếp cận ưa thích của bạn vì nó tận dụng chức năng tích hợp.moment.tz.setDefault[tz];