2013-02-03 34 views
5

Tôi có một phản hồi JSON từ máy chủ của tôi cho tôi dấu thời gian Unix UTC trong vài giây. Tôi đang phân tích cú pháp đó thành các ngày JavaScript sẽ được sử dụng trong biểu đồ (hiển thị thời gian bằng ngôn ngữ của người dùng). Tôi rõ ràng phải coax dấu thời gian tôi có (bằng UTC) vào miền địa phương của trình duyệt, vì vậy tôi đã viết một hàm tạo mới Date trong ngôn ngữ của trình duyệt, gọi số getTimezoneOffset() trên đó để nhận "bù trừ theo phút" trong miền địa phương hiện tại, theo the MDN, chuyển đổi cả hai thành mili giây và trả về tổng. Bây giờ tôi có một dấu thời gian Unix thân thiện với JavaScript trong miền địa phương của người dùng.Date.getTimezoneOffset inverted?

Tuy nhiên, tôi thì không.

khi nó quay ra, (new Date()).getTimezoneOffset() trả về (dương) 300 trong GMT-5 và -120 trong GMT + 2. Tại sao bù đắp đảo ngược? Tôi đã có thể dự kiến ​​bù đắp để phù hợp với các dấu hiệu của múi giờ - tức là: Tôi cần phải trừ đi 300 phút để đến GMT-5, và ADD 120 phút để đến GMT + 2. Thay vào đó, tôi phải trừ các giá trị được trả về bởi getTimezoneOffset

+0

Xem mô tả [ở đây] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) .'This có nghĩa là bù đắp là dương nếu múi giờ địa phương nằm sau UTC và âm nếu nó ở phía trước.' – Jashwant

+0

vì vậy nếu tôi thực sự đã nhấp qua phương pháp ...... * facepalm * –

Trả lời

5

Không.

Các spec (§15.9.5.26) nói:

15.9.5.26 Date.prototype.getTimezoneOffset()

Trả về sự khác biệt giữa giờ địa phương và thời gian tính theo giờ UTC chỉ trong vài phút.

  1. Hãy để t là giá trị thời gian này.
  2. Nếu t là NaN, trả về NaN.
  3. Quay lại (t - LocalTime (t))/msPerMinute.
+0

, về cơ bản, vấn đề RTFM. Có lẽ quá ít caffeine. Vâng, ít nhất nó là tài liệu: D. Cảm ơn –