如何仅从 rails 中的数组中的日期获取时间
how to take only times from dates inside array in rails
所以...我需要从 Array
中的日期中获取时间
例如我有一个这样的数组
a = [
Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 17:00:00.000000000 KST +09:00]
并希望获得
的结果
a = ["10:00", "10:00", "14:00", "14:00", "17:00"]
所以我在尝试这个
can_choose =[];
a.each_with_index do |time| strftime("%H:%M")
can_choose <<|time|
但根本不起作用...
我应该在哪里修复?
同样的方法也可以提取年月日
https://ruby-doc.org/stdlib-3.1.1/libdoc/date/rdoc/Date.html
a = [
'Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 17:00:00.000000000 KST +09:00']
can_choose =[]
a.map do |time|
t = DateTime.parse(time)
can_choose << t.strftime("%k:%M")
end
p can_choose
=> ["10:00", "10:00", "14:00", "14:00", "17:00"]
Ruby 都是关于消息传递的。发送消息的语法是:
receiver.message(argument)
strftime
就是这样的消息,但它需要一个合适的接收者。因此,如果您有一些 Time
实例,例如:
time = Time.parse('2022-03-17 10:00:00 +0900')
你会写:
time.strftime('%H:%M') #=> "10:00"
其中 time
是接收者,strftime
是消息,'%H:%M'
是参数。
您可以像这样在 each
循环中使用上面的代码:
can_choose = []
a.each do |time|
can_choose << time.strftime('%H:%M')
end
或者您可以使用 map
将数组转换为另一个数组:
can_choose = a.map { |time| time.strftime('%H:%M') }
这里的大括号{ ... }
相当于上面的do ... end
块
我会简单地选择:
can_choose = a.map { |datetime| datetime.strftime('%H:%M') }
如果您只需要 24 小时格式的小时和分钟,只需使用 %R
指令和 Time#strftime
or DateTime#strftime
can_choose = a.map { |time| time.strftime('%R') }
所以...我需要从 Array
中的日期中获取时间例如我有一个这样的数组
a = [
Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00,
Thu, 17 Mar 2022 17:00:00.000000000 KST +09:00]
并希望获得
的结果a = ["10:00", "10:00", "14:00", "14:00", "17:00"]
所以我在尝试这个
can_choose =[];
a.each_with_index do |time| strftime("%H:%M")
can_choose <<|time|
但根本不起作用...
我应该在哪里修复?
同样的方法也可以提取年月日 https://ruby-doc.org/stdlib-3.1.1/libdoc/date/rdoc/Date.html
a = [
'Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 10:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 14:00:00.000000000 KST +09:00',
'Thu, 17 Mar 2022 17:00:00.000000000 KST +09:00']
can_choose =[]
a.map do |time|
t = DateTime.parse(time)
can_choose << t.strftime("%k:%M")
end
p can_choose
=> ["10:00", "10:00", "14:00", "14:00", "17:00"]
Ruby 都是关于消息传递的。发送消息的语法是:
receiver.message(argument)
strftime
就是这样的消息,但它需要一个合适的接收者。因此,如果您有一些 Time
实例,例如:
time = Time.parse('2022-03-17 10:00:00 +0900')
你会写:
time.strftime('%H:%M') #=> "10:00"
其中 time
是接收者,strftime
是消息,'%H:%M'
是参数。
您可以像这样在 each
循环中使用上面的代码:
can_choose = []
a.each do |time|
can_choose << time.strftime('%H:%M')
end
或者您可以使用 map
将数组转换为另一个数组:
can_choose = a.map { |time| time.strftime('%H:%M') }
这里的大括号{ ... }
相当于上面的do ... end
块
我会简单地选择:
can_choose = a.map { |datetime| datetime.strftime('%H:%M') }
如果您只需要 24 小时格式的小时和分钟,只需使用 %R
指令和 Time#strftime
or DateTime#strftime
can_choose = a.map { |time| time.strftime('%R') }