Phương thức Date getTimezoneOffset() trong JavaScript

Phương thức Date getTimezoneOffset() trong JavaScript
Phương thức Date getTimezoneOffset() trong JavaScript

Chức năng của Phương thức Date getTimezoneOffset() trong JavaScript

Phương thức Date getTimezoneOffset() trong JavaScript dùng để lấy số phút lệch của giờ địa phương so với múi giờ quốc tế (UTC), có được số phút ta quy đổi ra số giờ bị lệch so với múi giờ quốc tế, múi giờ đi trước UTC có giá trị âm, múi giờ đi sau UTC có giá trị dương.

Cú pháp của Phương thức Date getTimezoneOffset() trong JavaScript

doituongdate.getTimezoneOffset();

doituongdate: Đối tượng thời gian new Date();

Code Phương thức Date getTimezoneOffset() trong JavaScript

<script>
var date = new Date();
var sophutlech = date.getTimezoneOffset();
document.write("Số phút lệch số với múi giờ quốc tế (UTC): "+sophutlech+"<br>");
var sogiolech = -(sophutlech/60);
document.write("Số giờ lệch số với múi giờ quốc tế (UTC): "+sogiolech+" giờ <br>");
// Số âm chứng tỏ múi giờ đi trước UTC
</script>

Kết quả:

Số phút lệch số với múi giờ quốc tế (UTC): -420
Số giờ lệch số với múi giờ quốc tế (UTC): 7 giờ

Chạy Thử

Ứng dụng Date getTimezoneOffset() trong xử lý múi giờ

Giá trị trả về từ getTimezoneOffset() đặc biệt hữu ích khi ứng dụng cần xác định sự chênh lệch giữa giờ địa phương và UTC. Thay vì tự giả định múi giờ của người dùng, JavaScript có thể lấy thông tin này trực tiếp từ môi trường đang chạy và dùng nó cho các thao tác liên quan đến thời gian.

Kiểm tra chênh lệch múi giờ giữa người dùng và UTC

Mỗi môi trường có thể sử dụng một múi giờ địa phương khác nhau. getTimezoneOffset() trả về độ lệch tính bằng phút giữa giờ địa phương và UTC, nhờ đó có thể xác định người dùng đang lệch bao nhiêu phút so với UTC.

const date = new Date();
const offset = date.getTimezoneOffset();

console.log(`Độ lệch so với UTC: ${offset} phút`);

Điểm cần lưu ý là giá trị này có thể mang dấu âm hoặc dương tùy múi giờ. Chẳng hạn, một múi giờ nằm trước UTC thường cho giá trị âm, trong khi múi giờ nằm sau UTC có thể cho giá trị dương. Vì vậy, không nên chỉ kiểm tra số tuyệt đối mà bỏ qua dấu của kết quả.

Chuyển đổi thời gian dựa trên giá trị getTimezoneOffset()

Khi cần quy đổi một thời điểm giữa giờ địa phương và UTC, giá trị offset có thể được sử dụng để tính toán số phút chênh lệch. Cách này phù hợp với những thao tác đơn giản, chẳng hạn điều chỉnh một thời điểm theo độ lệch múi giờ hiện tại.

const localDate = new Date();
const offset = localDate.getTimezoneOffset();

const utcTime = new Date(localDate.getTime() + offset * 60 * 1000);

console.log(utcTime);

Tuy nhiên, nếu ứng dụng phải xử lý nhiều múi giờ khác nhau, việc cộng hoặc trừ offset thủ công không phải lúc nào cũng là lựa chọn tốt. Đặc biệt, offset phụ thuộc vào thời điểm cụ thể nên cùng một khu vực có thể có giá trị khác nhau ở những thời điểm khác nhau.

Lưu ý khi xử lý múi giờ và giờ mùa hè

Một sai lầm thường gặp là coi getTimezoneOffset() như một giá trị cố định của múi giờ. Trên thực tế, kết quả được xác định dựa trên đối tượng Date và thời điểm đang được xét. Vì vậy, khi có thay đổi do giờ mùa hè (DST), giá trị offset có thể thay đổi.

Nếu ứng dụng chỉ cần biết độ lệch của một thời điểm cụ thể, có thể gọi phương thức trực tiếp trên đối tượng Date tương ứng. Còn với hệ thống đặt lịch, lịch quốc tế hoặc dữ liệu liên quan đến nhiều khu vực, nên sử dụng giải pháp quản lý múi giờ chuyên biệt thay vì tự xây dựng toàn bộ quy tắc chuyển đổi bằng phép cộng trừ phút.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Phương thức Date getTimezoneOffset() trong JavaScript.

  • ★★★★★ ★★★★★
  • 0 Bình luận
CEO Bùi Tấn Lực | Founder Web Mới
Bùi Tấn Lực
Tìm hiểu về CEO Bùi Tấn Lực, Founder Web Mới với nhiều năm kinh nghiệm trong lĩnh vực phát triển website, SEO và chia sẻ kiến thức công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Phương thức Date getTimezoneOffset() trong JavaScript
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !