gpt4 book ai didi

ruby-on-rails - 在 Ruby 中解析日期

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:23 24 4
gpt4 key购买 nike

我正在尝试在 Ruby 中解析一些格式错误的日期。我决定将部分方法取决于 ampm 的存在,因此我在此处拆分了字符串。

def bad_date(date)
if date.match(/m\d/i)
date_time = date.split('m', 2).reverse
time = date_time.include?('m')
date = date_time - time
else
date
end
end

它在正确的位置拆分并反转​​数组,这一切都很好,但它需要 m。我该如何更换它?或者我怎样才能完全避免这种情况?

基本上我正在尝试像这样转换一些日期:

dates
=> ["0900am06/13/2015", "0900 am06/13/2015", "0900am 06/13/2015", "0900 am 06/13/2015"]

进入这个:

2015-06-13 09:00 AM

在可接受的误差范围内。

最佳答案

您可以求助strptimestrftime两种方法:

require 'date'

d = Date.strptime("0900am06/13/2015", "%H%M%p%m/%d/%Y")
# => #<Date: 2015-06-13 ((2457187j,0s,0n),+0s,2299161j)>
d.strftime("%Y-%m-%d %H:%M %P")
# => "2015-06-13 00:00 am"
d.strftime("%Y-%m-%d %H:%M %p")
# => "2015-06-13 00:00 AM"

这里有一个方法:

require 'date'

def bad_date(date)
DateTime.strptime(date.tr(" ",''), "%H%M%p%m/%d/%Y").strftime("%Y-%m-%d %H:%M %p")
end

dates = ["0900am06/13/2015", "0900 am06/13/2015", "0900am 06/13/2015"]
dates.map { |d| bad_date d }
# => ["2015-06-13 09:00 AM", "2015-06-13 09:00 AM", "2015-06-13 09:00 AM"]

关于ruby-on-rails - 在 Ruby 中解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com