如何按星期几获取日期 ruby

达米尔·努尔加利耶夫

我正在创建 rails 应用程序,我需要将日历放入其中。我有一个 json 数据,每周发送一次到应用程序。JSON 对象有这样的东西:

route: "Monday"

或者

route: "Saturday"

我需要把一周中的这一天作为往常日期(每周计算的日期,从发送 JSON 的那一天起),例如今天发送的 JSON 对象,我应该给所有这些对象一个日期,路由:“星期六“应该给我 24-June-2017。希望你明白我的问题:)

汤姆·罗德

要在 Rails 中获取当前日期,您可以使用:

Date.today

要获得上一个星期六(因为今天是Monday 3rd July,那是Saturday 1st July),您可以使用:

Date.today.beginning_of_week(:saturday)

或者,如果您真正想要的是一周的星期六 ( Saturday 24th June),那么您可以使用:

Date.today.weeks_ago(1).beginning_of_week(:saturday)

或者,如果您更喜欢:

1.week.ago.beginning_of_week(:saturday)

...但是,请注意,上面将返回一个ActiveSupport::TimeWithZone对象而不是一个Date对象 - 因此行为会略有不同。

通读 rails 文档 - 特别是ActiveSupportrubyDate扩展,看看有哪些方法可用。

如果出于某种原因,您需要纯粹地执行此操作ruby(即,没有与ActiveSupport捆绑在一起的上述扩展rails),那么您可以改用以下Date.parse方法

require 'date'

Date.parse("Saturday") - 7
  # => Sat, 01 Jul 2017

为了将您的Date(或类似的)对象转换为您想要的字符串格式 ( "24-June-2017"),您可以使用 ruby​​ 的strftime方法:

(Date.parse("Saturday") - 7).strftime('%d-%B-%Y')

在 rails 中,将此类自定义日期格式放置在语言环境或初始化程序中以避免重复是一种常见约定然后,您可以按名称引用此格式:

# config/initializers/date_formats.rb
# (Call this whatever you want!)
Date::DATE_FORMATS[:calendar] = '%d-%B-%Y'

# Anywhere else in the rails app
Date.today.beginning_of_week(:saturday).to_s(:calendar)
  # => "01-July-2017"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章