如何獲取代表給定時區中特定日期的一天的開始時間的ruby Time對象。在特定時區的開始日期獲取時間對象
回答
我最終使用的#local
方法對ActiveSupport::TimeZone
檢體p分配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
目前輸出=> 2011-11-02 00:00:00 -0400
Time.now.in_time_zone('Asia/Shanghai').beginning_of_day
目前輸出=> 2011-11-03 00:00:00 0800
date = Date.today
date.to_time.in_time_zone('Asia/Shanghai').beginning_of_day
目前輸出=> 2011-11-02 00:00:00 0800
我希望這很簡單。不幸的是,不能保證你在時區轉換後到達的時間是在同一天。有時它會,有時它不會取決於開始和結束區域。我想我可以將轉換後的日期分量與原始值進行比較,並在必要時進行調整,但這真的很笨拙。我希望的是一種優雅的方式來實現這一點。希望api中有一些東西,我不認爲這是一件想要做的事。 –
我可能不完全明白你想要做什麼,但'date.to_time.in_time_zone('TIMEZONE')。beginning_of_day'給你00:00:00 UTC原始指定日期。 –
它不給你0 UTC,它在時區給你0,這是更可取的。但是,在使用in_time_zone轉換時區之前,不會這樣做,因此日期不一定有效。這裏是我的意思的例子。 'date.to_time.in_time_zone('Asia/Shanghai')。midnight.in_time_zone(Time.zone).midnight#=>過去的一天。理想情況下,紅寶石應該讓我做這樣的事情。 'date.to_time(區)'。 –
不知道這是否會有所幫助,但是這讓我在這我的谷歌API配額重設時間:
# The most recent midnight in California in UTC time
def last_california_midnight
(Time.now.utc - 7.hours).midnight + 7.hours
end
我這樣使用它與Mongoid,例如:
def api_calls_today
Call.where(updated_at: { '$gte' => last_california_midnight }).count
end
只要將Mongo設置爲UTC,無論將代碼部署到哪個時區,這都會起作用。
- 1. 獲取日期開始的時間戳
- 2. Lua - 獲取特定時區的時間和日期
- 3. 開始時間系列Highcharts在特定日期/時間繪製
- 4. Python - 特定時區的日期時間
- 5. 僅從日期時間對象獲取日期或時間
- 6. 如何使用momentjs獲取特定時區日期時間值
- 7. 格式日期時間特定時區
- 8. 獲取特定日期時間
- 9. 獲取日期時間對象
- 10. Momentjs時區 - 讓在時間日期在特定時區
- 11. 獲取特定區域的日期/時間?
- 12. 獲取時區知道日期時間
- 13. 從日期對象獲取瀏覽器的時區和日期
- 14. 在特定時區UTC時間偏差發生變化時獲取日期
- 15. 如何獲取日期時間月開始和結束日期?
- 16. 從日期開始獲取日期時間
- 17. 獲取與nscala時間的特定圖案的日期時間
- 18. 根據開始日期獲取對象僅有日期日期
- 19. SQL - 獲取傳遞日期時間的自定義日期開始日期時間
- 20. 快速獲取特定日期和時間的UTC時間?
- 21. 從今天開始使用特定的php日期時間戳獲取值
- 22. 在特定時間區域獲取特定時間
- 23. 獲取日期時間對象的時間
- 24. 如何在特定日期獲取特定時間SQL查詢
- 25. MYSQL日期時間查詢來獲取特定的日期值
- 26. 如何獲取日期時間大於特定日期時間的aws?
- 27. 如何在Rails中的特定時區獲取特定時間
- 28. 獲取PHP DatePeriod對象的開始日期和結束日期?
- 29. 如何在特定日期開始時間組pandas
- 30. .NET Timespan對象:如何獲取開始和結束日期時間?
只是一個評論,因爲我不知道任何有關Ruby的時區處理:午夜並不總是存在,它可能會發生兩次。例如,巴西在午夜改變時鐘。相反,您應該找到一天的開始。 –
有趣的一點。爲了我的目的,我感興趣的一天的開始。感謝Jon。我會更新這個問題。 –
你的實際用例是什麼? (我發現這個問題是因爲我希望得到加利福尼亞州最近的午夜,就像UTC一樣,API配額跟蹤。) –