如何获取代表给定时区中特定日期的一天的开始时间的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配额跟踪。) –