Làm cách nào tôi có thể nhận được đối tượng Thời gian ruby đại diện cho ngày bắt đầu của ngày vào một ngày cụ thể trong một múi giờ nhất định.Nhận đối tượng thời gian vào ngày bắt đầu trong một múi giờ cụ thể
Trả lời
tôi đã kết thúc bằng cách sử dụng phương pháp #local
trên ActiveSupport::TimeZone
đối tượng p các thành phần của đối tượng Date
.
# Get example date and time zone...
date = Date.today
timezone = ActiveSupport::TimeZone['America/New_York']
# Get beginning of day for date in timezone
timezone.local(date.year, date.month, date.day)
date = Date.today
date.to_time.in_time_zone('America/New_York').beginning_of_day
Hiện kết quả đầu ra => 2011-11-02 00:00:00 -0400
Time.now.in_time_zone('Asia/Shanghai').beginning_of_day
Hiện kết quả đầu ra => 2011-11-03 00:00:00 +0800
date = Date.today
date.to_time.in_time_zone('Asia/Shanghai').beginning_of_day
Hiện kết quả đầu ra => 2011-11-02 00:00:00 +0800
Tôi ước rằng điều đó thật đơn giản. Thật không may, không có gì đảm bảo rằng thời gian bạn đến, sau khi chuyển đổi múi giờ, là trong cùng một ngày. Đôi khi nó sẽ được và đôi khi nó sẽ không phụ thuộc vào khu vực bắt đầu và kết thúc. Tôi cho rằng tôi có thể so sánh thành phần ngày sau khi chuyển đổi với giá trị ban đầu và điều chỉnh nếu cần thiết nhưng điều đó thực sự rất khó khăn. Những gì tôi hy vọng là một cách thanh lịch để làm điều đó luôn luôn hoạt động. Hy vọng rằng có một cái gì đó trong api, tôi không nghĩ rằng đây là một điều điên rồ muốn làm. –
Tôi có thể không hiểu hoàn toàn những gì bạn đang cố gắng làm nhưng 'date.to_time.in_time_zone ('TIMEZONE'). Start_of_day' cung cấp cho bạn 00:00:00 UTC cho ngày được chỉ định ban đầu. –
Nó không cung cấp cho bạn 0 UTC, nó cung cấp cho bạn 0 trong múi giờ, đó là thích hợp hơn. Tuy nhiên, nó không làm điều này trước khi chuyển đổi múi giờ với in_time_zone để ngày không nhất thiết phải hợp lệ nữa. Đây là ví dụ về ý tôi. 'date.to_time.in_time_zone ('Asia/Shanghai'). midnight.in_time_zone (Time.zone) .midnight # => Một ngày trong quá khứ.'. Lý tưởng nhất, ruby nên cho phép tôi làm điều gì đó như thế này. 'date.to_time (zone)'. –
Không chắc chắn nếu điều này giúp, nhưng điều này được tôi thời gian mà tại đó hạn ngạch Google API của tôi reset:
# The most recent midnight in California in UTC time
def last_california_midnight
(Time.now.utc - 7.hours).midnight + 7.hours
end
tôi sử dụng nó như thế này với Mongoid, ví dụ:
def api_calls_today
Call.where(updated_at: { '$gte' => last_california_midnight }).count
end
Thao tác này sẽ hoạt động bất kể múi giờ được triển khai cho đến khi nào Mongo được đặt thành UTC.
- 1. Moment.js: Ngày định dạng trong một múi giờ cụ thể
- 2. Nhận dấu thời gian cho ngày bắt đầu của ngày
- 3. Thời gian Joda - Nhận tên múi giờ?
- 4. Đường ray: Cách phân tích chuỗi thời gian theo ngày thành múi giờ cụ thể
- 5. Nhận ngày giờ cho múi giờ khác Bất kể múi giờ địa phương
- 6. Thời gian chạy bằng múi giờ
- 7. Cách bỏ qua múi giờ của người dùng và lực Ngày() sử dụng múi giờ cụ thể
- 8. Tôi làm cách nào để “tách rời” một ngày trong một múi giờ cụ thể?
- 9. Nhận chênh lệch múi giờ giữa hai múi giờ trong một thời hạn nhất định
- 10. Đặt NSDate thành ngày, giờ và múi giờ cụ thể
- 11. Nhận dấu thời gian hiện tại từ múi giờ cụ thể
- 12. Paypal Thời gian ngày bắt đầu phê duyệt trước?
- 13. PHP ngày dấu thời gian để sử dụng múi giờ
- 14. Python - datetime của một múi giờ cụ thể
- 15. Làm thế nào để tìm ra thời gian thực tế khi DST bắt đầu/kết thúc cho một múi giờ và năm cụ thể?
- 16. Tạo một đối tượng DateTime với một Ngày giờ UTC cụ thể trong PowerShell
- 17. Thêm Thời gian vào một Ngày giờ trong C#
- 18. Làm thế nào để chuyển đổi một ngày giờ thành múi giờ cụ thể trong C#?
- 19. Điều chỉnh múi giờ theo thời gian
- 20. Github Đóng góp lịch ngày bắt đầu thời gian
- 21. Nhận múi giờ từ DateTime
- 22. Cách thêm múi giờ vào một cá thể ngày giờ ngây thơ trong python
- 23. Cách nhận thời gian bắt đầu và kết thúc trong một ngày
- 24. Chuyển đổi thời gian và ngày tháng từ múi giờ này sang múi giờ khác trong PHP
- 25. Cách chuyển đổi thời gian chính xác theo múi giờ?
- 26. Cách tạo đối tượng DateTime mới trong một múi giờ cụ thể (tốt nhất là múi giờ mặc định của ứng dụng của tôi, chứ không phải UTC)?
- 27. Thêm giờ vào đối tượng Ngày Javascript?
- 28. Khởi tạo đối tượng NSDate với thời gian cụ thể
- 29. Múi giờ biến mất trong đầu ra trong thời gian hệ thống R
- 30. ngày javascript - giữ lại khoảng thời gian bù trừ múi giờ
Chỉ là một nhận xét vì tôi không biết gì về xử lý múi giờ của Ruby: nửa đêm không phải lúc nào cũng tồn tại và có thể xảy ra hai lần. Brazil thay đổi đồng hồ của nó vào lúc nửa đêm, ví dụ. Có thể bạn nên tìm ngày bắt đầu của ngày. –
Điểm thú vị. Vì mục đích của tôi, ngày bắt đầu là ngày tôi thích. Cảm ơn Jon. Tôi sẽ cập nhật câu hỏi. –
Trường hợp sử dụng thực tế của bạn là gì? (Tôi đã tìm thấy câu hỏi này vì tôi muốn có được nửa đêm gần đây nhất ở California, như UTC, để theo dõi hạn ngạch API.) –