Tôi cần chuyển đổi đối tượng Ngày thành đối tượng TimeWithZone biểu thị ngày bắt đầu của ngày đó trong một múi giờ nhất định.chuyển đổi đối tượng Ngày thành TimeWithZone
Phương pháp sau đây hoạt động, nhưng dường như quá phức tạp vì nó đòi hỏi tôi phải chuyển đổi ngày đến một chuỗi:
?> date = Date.parse("2010-02-17")
=> Wed, 17 Feb 2010
>> ActiveSupport::TimeZone['Eastern Time (US & Canada)'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 EST -05:00
>> ActiveSupport::TimeZone['UTC'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 UTC 00:00
Có cách nào tốt hơn tôi là thiếu?
Edit: Mọi người đang cho thấy các biến thể của:
?> date.to_datetime.in_time_zone('Eastern Time (US & Canada)').beginning_of_day
=> Tue, 16 Feb 2010 00:00:00 EST -05:00
Như bạn có thể thấy, đây không phải là một chuyển đổi tương đương kể từ khi nó rời khỏi tôi khi bắt đầu ngày 16 tháng 2 EST, thay vì bắt đầu EST EST ngày 17 tháng 2.
Dường như giải pháp của bạn có thể là cách đúng để đi. –
Tôi đã chỉnh sửa phản hồi của mình để khắc phục sự cố này. –
Tự cung cấp giải pháp! =) Thời gian với Múi giờ luôn lộn xộn. – John