Hướng dẫn get client machine timezone javascript - lấy javascript múi giờ của máy khách
Câu hỏi này đã có hơn 30 câu trả lời, nhưng tôi chắc chắn có những người sẽ đến đây và thực sự không biết họ đang tìm kiếm điều gì. Show
Bất ngờ! Bạn sắp mở một lon giun! Tôi thực sự khuyên bạn nên đọc bài viết này mà tôi đã viết gần đây về những cơn đau đầu khi đối phó với Timezones trong JS! https://medium.com/@iedin/time-and-time-ure-metaches-in-javascript-AE4D873A665D Bạn đang tìm kiếm chính xác điều gì?Tùy thuộc vào trường hợp sử dụng thực sự của bạn, bạn thực sự cần những thứ khác nhau. 1) Một cách để chuyển đổi một thời điểm cố định (như ngày 13 tháng 11 năm 2021 lúc 11:35:21 tối tại San Francisco) sang thời gian đồng hồ treo tường của người dùng, người có thể ở bất cứ đâu trên thế giới.Sử dụng .Tolocalestring (). Nó có nhiều tham số tùy chỉnh để định dạng hơn bạn có thể nghĩ đến, thông qua hai tham số của nó là Là nhà phát triển, chỉ cần vượt qua giá trị thời gian đó (ví dụ: thời gian mở cửa của một sự kiện bán hàng hoặc một cuộc thi) dưới dạng số dấu thời gian UNIX (đó là số giây từ 1/1/1970 ở UTC, Timezone-Agnostic và DST0AgNostic ) cho khách hàng, và sau đó làm 2) Có thể gửi cho người dùng một thông báo/email vào lúc 9 giờ sáng giờ địa phương của họ, 3 tháng kể từ bây giờĐây là một yêu cầu hoàn toàn khác nhau! Giống như, rất khác nhau! GMT-8: 00 không đủ sao?No! Đó chỉ là múi giờ mà người dùng đang ở, tại một thời điểm, như "ngay bây giờ, ngày nay"."right now, today".
"PDT" không đủ cho điều đó?No! Trước hết, PDT thậm chí không phải là một điều quanh năm. Bây giờ là tháng 11 và Timeanddate.com nói rằng "Hiện tại không có địa điểm nào trên Pdt. Bạn có muốn xem PST không?" (Đọc bài viết trung bình của tôi ở trên để biết thêm chi tiết.)No locations currently on PDT. Would you like to see PST?" (read my Medium article above for more details.) Trừ khi bạn đang đi cho chuỗi UI từ máy khách đến khách hàng, pdt/cest/vv này. Không có giá trị gì cả! Tại sao? Bởi vì Tijuana ở Mexico và San Francisco ở Mỹ đều ở PDT trong tháng 6, nhưng họ có những ngày DST (tiết kiệm ánh sáng ban ngày) khác nhau mà họ chuyển sang PST. Và bạn cần phải biết điều đó! Ngày DST của Hoa Kỳ vào năm 2022 là ngày 13 tháng 3 năm 2022 đến ngày 6 tháng 11 năm 2022. Ngày DST của Mexico vào năm 2022 là ngày 3 tháng 4 năm 2022 đến ngày 30 tháng 10 năm 2022. 93% ngày, trong 7% số ngày (ví dụ: ngày 14 tháng 3 đến ngày 3 tháng 4 và ngày 31 tháng 10 đến ngày 6 tháng 11 năm 2022) họ không khớp. Vì vậy, ngay cả khi bạn biết đó là tháng 11 và bạn biết người dùng đang ở PDT, bạn không thể biết khi nào (số dấu thời gian nào) sẽ là 9 giờ sáng ngày 1 tháng 4 năm 2022 trong thiết bị của người dùng. PS. Tồi tệ hơn nếu bạn đang cố gắng để có được điều đó 0. FYI, nếu bạn thay đổi địa phương của máy của bạn thành 1 (tiếng Tây Ban Nha, đó là ngôn ngữ của 13% dân số Hoa Kỳ), đây là những gì bạn nhận được:
Chúc may mắn với 2!Sau đó, tôi nên làm gì?Cách chính xác duy nhất là sử dụng các giá trị múi giờ IANA (đọc "Tiêu chuẩn"). Đó là cột thứ hai của trang wikipedia này. Nó đến từ:
Nó trả về giá trị IANA, đó là 3 cho San Francisco. Đây là giá trị bạn nên lưu trữ trong DB của mình cho người dùng, nếu có. Bạn có thể nhận được tất cả các loại thông tin về nó từ gói múi giờ.json và chuyển đổi thời gian từ/đến múi giờ đó, cộng với ngày (vấn đề) như câu trả lời này.Còn IE11 thì sao?IE11 không hỗ trợ điều đó 4. Hầu hết các polyfills chỉ là đoán nó và không chính xác. Vì vậy, hãy cố gắng bỏ hỗ trợ cho IE11 hoặc sử dụng thư viện và chuẩn bị cho một số không chính xác.3) Tôi chỉ muốn tìm ra phần bù múi giờ của họ vào lúc này (ví dụ: -8: 00)Bạn có lẽ không nên. Tôi không thể nghĩ về bất kỳ lý do thực sự mà bạn cần điều này. Một lần nữa, biết giá trị này cho ngày hôm nay, không cho bạn biết giá trị này sẽ là gì vào ngày mai. Nhưng dù sao, bạn luôn có thể nhận được giá trị đó bằng cách
Ở phía khách hàng. Lưu ý: .getTimeZoneOffset () không phải là phần bù múi giờ của đối tượng ngày, bạn đang gọi nó. Vui lòng đọc tài liệu.NOT the timezone offset of the date object, you are calling it on. Please read the documentation. Để chính xác, nó cần đối tượng ngày qua (có dấu thời gian, đề cập đến một điểm duy nhất trong lịch sử), và sau đó cho biết sự khác biệt giữa thời gian UTC và thời gian địa phương tại điểm- thời gian. Một lần nữa, nó phụ thuộc vào ngày. Nhìn thấy:
Bất kỳ thư viện?Dưới đây là danh sách các thư viện hỗ trợ trao đổi múi giờ. Nhưng, hãy nhớ rằng, bạn phải giải quyết vấn đề thiết kế trước, và sau đó tìm kiếm mã. Mọi thứ xung quanh múi giờ có thể dễ dàng trở nên phức tạp và bạn phải biết "PDT" và "GMT-8" không phải là giá trị múi giờ thông tin/có giá trị quanh năm để lưu trữ trong DB cho người dùng. :) Làm thế nào để tôi tìm thấy múi giờ của tôi trong JavaScript?JavaScript Ngày GetTimeZoneOffset () getTimeZoneOfset () trả về sự khác biệt giữa thời gian UTC và thời gian địa phương. GetTimeZoneOffset () trả về sự khác biệt trong vài phút. Ví dụ: nếu múi giờ của bạn là GMT+2, -120 sẽ được trả về.getTimezoneOffset()
getTimezoneOffset() returns the difference between UTC time and local time. getTimezoneOffset() returns the difference in minutes. For example, if your time zone is GMT+2, -120 will be returned.
Làm cách nào để sử dụng gettimezoneoffset?Phương thức GetTimeZoneOffset () được sử dụng để trả về chênh lệch thời gian giữa thời gian phối hợp phổ quát (UTC) và thời gian địa phương, trong vài phút.Nếu múi giờ của bạn là GMT+5, -300 (60*5) phút sẽ được trả lại.Tiết kiệm ánh sáng ban ngày ngăn chặn giá trị này không đổi.Tham số: Phương thức này không chấp nhận bất kỳ tham số nào.to return the time difference between Universal Coordinated Time (UTC) and local time, in minutes. If your time zone is GMT+5, -300 (60*5) minutes will be returned. Daylight savings prevent this value from being constant. Parameter: This method does not accept any parameter.
Làm cách nào để có được múi giờ hệ thống trong React JS?Làm thế nào để tôi có được múi giờ hiện tại trong React JS ?.. const datetotime = date => ngày.tolocalestring ('en-us', {. Giờ: 'Số',. phút: 'Số'. const datestring = "2019-05-05T10: 30: 00z" ;. const useroffset = ngày mới ().getTimeZoneOffset ()*60*1000 ;. const localDate = ngày mới (datestring) ;. Ngày JavaScript có timezone không?Đối tượng ngày trong JavaScript không lưu trữ múi giờ.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. Tuy nhiên, chúng ta có thể sử dụng phương pháp Tolocalestring để có được chuỗi cụ thể địa phương được điều chỉnh theo múi giờ.. It stores a timestamp that represents the number of milliseconds that have passed since midnight on January 1st, 1970. However, we can use the toLocaleString method to get a locale-specific string that is adjusted to a time zone. |