gpt4 book ai didi

ruby - `DateTime.strptime` 返回工作日/时间字符串的无效日期

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:45 31 4
gpt4 key购买 nike

为什么 Ruby 的 strptime 不将其转换为 DateTime 对象:

DateTime.strptime('Monday 10:20:20', '%A %H:%M:%S')
# => ArgumentError: invalid date

虽然这些有效?

DateTime.strptime('Wednesday', '%A')
# => #<DateTime: 2015-11-18T00:00:00+00:00 ((2457345j,0s,0n),+0s,2299161j)>
DateTime.strptime('10:20:20', '%H:%M:%S')
# => #<DateTime: 2015-11-18T10:20:20+00:00 ((2457345j,37220s,0n),+0s,2299161j)>

最佳答案

这看起来像一个错误 - minitech's comment是正确的。不过,现在有一个解决方法(因为您可能希望它现在 起作用):

您可以在空格上拆分它,从工作日获取日期,然后从另一个字符串获取时间部分(使用 minitech 提到的 _strptime 方法)。然后您可以将第一个日期的时间设置为第二个字符串的时间组件:

def datetime_from_weekday_time_string(string)
components = string.split(" ")
date = DateTime.strptime(components[0], '%A')
time = Date._strptime(components[1], '%H:%M:%S') # returns a hash like {:hour=>10, :min=>20, :sec=>20}
return date.change(time)
end

2.2.2 :021 > datetime_from_weekday_time_string("Monday 10:20:20")
=> Mon, 16 Nov 2015 10:20:20 +0000

2.2.2 :022 > datetime_from_weekday_time_string("Saturday 11:45:21")
=> Sat, 21 Nov 2015 11:45:21 +0000

2.2.2 :023 > datetime_from_weekday_time_string("Thursday 23:59:59")
=> Thu, 19 Nov 2015 23:59:59 +0000

关于ruby - `DateTime.strptime` 返回工作日/时间字符串的无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785322/

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