Tôi không đề cập đếnTrong Ruby hoặc Rails, cách tốt nhất để chuyển đổi Giờ Miền Đông thành UTC là gì?
myDateTime = DateTime.now
myDateTime.new_offset(Rational(0, 24))
hoặc
Time.now.utc
gì tôi có là một ngày văn bản được đưa ra trong Eastern Time.
Tôi có thể chuyển đổi ngày văn bản đó thành Ngày giờ. Hãy gọi nó là eastern_date_time
.
Bây giờ, chúng tôi có một biến có chứa một DateTime, nhưng không có gì biết đó là phía đông bên cạnh chúng tôi. Chuyển đổi bản thân nó sẽ khá nặng nề. Nếu ngày trong giờ tiết kiệm ánh sáng ban ngày (DST) (từ ngày 8 đến ngày 1 tháng 11 năm nay), chúng tôi sẽ phải thêm 4 giờ nữa để chuyển sang UTC, và nếu ngày ở Giờ chuẩn (ST), chúng tôi sẽ phải thêm 5 giờ vào biến east_date_time của chúng tôi.
Làm cách nào chúng tôi có thể xác định rằng chúng tôi có thời gian là ngày giờ miền Đông và sau đó chuyển đổi thành UTC ... thứ gì đó sẽ xác định xem ngày có nằm trong DST/ST hay không và áp dụng 4 hoặc 5 giờ đúng cách?
Tôi muốn chuyển đổi bất kỳ loại ngày nào tôi nhận được vào UTC, để lưu trữ trong cơ sở dữ liệu của tôi.
EDIT:
Sử dụng `in_time_zone', tôi không thể để chuyển đổi chữ Time Đông của tôi để UTC. Làm thế nào tôi có thể đạt được mục tiêu đó? Ví dụ:
text_time = "Nov 27, 2015 4:30 PM" #given as Eastern
myEasternDateTime = DateTime.parse text_time # => Fri, 27 Nov 2015 16:30:00 +0000
#now we need to specify that this myEasternDateTime is in fact eastern. However, it's our default UTC. If we use in_time_zone, it just converts the date at UTC to Eastern
myEasternDateTime.in_time_zone('Eastern Time (US & Canada)') # => Fri, 27 Nov 2015 11:30:00 EST -05:00
myEasternDateTime.utC# => Fri, 27 Nov 2015 16:30:00 +0000
Đó không phải là điều chúng tôi muốn. Chúng tôi phải xác định rằng myEasterDateTime thực tế là ở miền đông ... để khi chúng tôi thực hiện một số myEasterDateTime.utc
vào 16:30:00, chúng tôi sẽ nhận được 20:30:00.
Tôi làm cách nào để thực hiện việc này?
nơi tôi có thể nhận danh sách tất cả các múi giờ như 'US/Eastern'. Có lệnh nào không? –
'ActiveSupport :: TimeZone.zones_map.values.collect {| z | z.name} ' – hd1
Tôi không thể tìm ra cách chuyển đổi Ngày văn bản phương Đông thành Giờ miền Đông, và sau đó nhận được tương đương UTC với phương thức in_time_zone. Tôi đã thêm một EDIT vào bài đăng gốc. –