我正在尝试确定使用ruby安装的最后一个.rpm的天数,但是当我尝试使用Date类进行格式化时,我发现它是第5行的无效日期(ArguementError)我已经尝试过将它转换为整数的方法,但似乎没有任何效果。有什么想法吗?
require 'date'
require 'time'
tset = `rpm -qa --last | head -1 | rev | cut -d ' ' -f4-6 | rev`
atime = Date.strptime(tset, '%Y-%m-%d')
today = Date.today
btime = Date.strptime(today, '%Y-%m-%d')
daterange = ("btime - atime")
puts daterange
这是我的rpm命令的输出
[root@default-centos-67 dev]# rpm -qa --last | head -1 | rev | cut -d ' ' -f4-6 | rev
18 Nov 2016
答案 0 :(得分:2)
您对strptime
的调用未使用正在解析的日期字符串的正确格式。
正确的日期字符串为:%d %b %Y
%d
是该月的两位数(零填充)日%b
是缩写的月份名称%Y
是4位数年份请注意,这些是以空格分隔的,而不是以连字符分隔的。
总之,以下是如何从tset
解析日期:
Date.strptime(tset, '%d %b %Y')
答案 1 :(得分:1)
rpm
命令的结果是" 2016年11月18日"并且您的Date.strptime
命令正在寻找具有不同格式的日期。
变化:
atime = Date.strptime(tset, '%Y-%m-%d')
到
atime = Date.strptime(tset, '%d %b %Y')
我几乎总是转向the documentation on strftime来帮助我解析用于解析Date
和DateTime
个对象的标记。