在特定时区的某一天开始获取时间对象
如何获得一个ruby Time对象,该对象表示给定时区中特定日期的一天的开始。
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
我最终在ActiveSupport::TimeZone
对象上使用#local
方法传递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)
不确定这是否有帮助,但这让我得到了重置Google 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。
- ActiveSupport中mattr_accessor和cattr_accessor之间的区别?
- 访问ActiveSupport :: LogSubscriber子类中的Rails请求
- NoMethodError:ActiveSupport的未定义方法`halt_callback_chains_on_return_false =’:模块
- 将Date对象转换为TimeWithZone
- 您如何知道何时使用XML解析器以及何时使用ActiveResource?
- 无法使用cache_classes = true为Concern(ActiveSupport :: Concern :: MultipleIncludedBlocks)定义多个“包含”块
- Rails:在时区中获取#beginning_of_day
- 未初始化的常量TZInfo :: InvalidTimezoneIdentifier(NameError) – Rails 4
- 我需要做什么才能让Hash.from_xml()工作?