Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中字符串的解析时间_Ruby_Date - Fatal编程技术网

Ruby中字符串的解析时间

Ruby中字符串的解析时间,ruby,date,Ruby,Date,我有一些日期字符串,我使用正则表达式找到它们 d = myData.scan(/....\d*..\d{4}/) 例如,“2013年6月15日”,尽管这些日期在不同的实例中有所变化。我想解析这些,并将它们从月份缩写转换为完整月份 这项工作(需要“时间”): 但这并不是: Time.parse("d").strftime("%B %d, %Y") 正如我所说的,实际日期会发生变化,我正试图用一个脚本来实现自动化。如有任何建议,将不胜感激 更新:对不起,我想我只是跳过了一步。我以为我已经试过了,

我有一些日期字符串,我使用正则表达式找到它们

d = myData.scan(/....\d*..\d{4}/)
例如,“2013年6月15日”,尽管这些日期在不同的实例中有所变化。我想解析这些,并将它们从月份缩写转换为完整月份

这项工作(需要“时间”):

但这并不是:

Time.parse("d").strftime("%B %d, %Y")
正如我所说的,实际日期会发生变化,我正试图用一个脚本来实现自动化。如有任何建议,将不胜感激

更新:对不起,我想我只是跳过了一步。我以为我已经试过了,但我想没有。这项工作:

d = myData.scan(/....\d*..\d{4}/)
d2 = Time.parse("d")
date = Time.parse("d2").strftime("%B %d, %Y")

根据@craigeley提到的,如果
d
是您的数据:

Time.parse(d).strftime("%B %d, %Y")

将变量名放在引号中不起作用。因此,不是:

Time.parse("d")
您必须使用:

Time.parse(d)

此外,
scan
返回一个数组

"Jun 15, 2013".scan(/....\d*..\d{4}/)     #=> ["Jun 15, 2013"]
追加
[0]
以获取数组的第一个元素:

"Jun 15, 2013".scan(/....\d*..\d{4}/)[0]  #=> "Jun 15, 2013"
完整示例:

my_data = "Jun 15, 2013"
d = my_data.scan(/....\d*..\d{4}/)[0]
date = Time.parse(d).strftime("%B %d, %Y")
#=> "June 15, 2013"

您的实际源代码是否将字符串传递给
Time.parse
parse(“d”)
),或者您正在使用变量?我们知道代码无法将
“d”
传递给
parse
,因为Ruby不允许这样做
Time.parse('d')
返回
ArgumentError:d中没有时间信息
。因此,使用
parse(“d”)
parse(“d2”)
的代码都不可能工作,不管OP怎么说。
scan
返回一个数组,因此
d[0]
应该可以工作。heck
parse
时间
中甚至一次也没有提到过!?人们应该如何了解这种方法的存在?它在标准库中
my_data = "Jun 15, 2013"
d = my_data.scan(/....\d*..\d{4}/)[0]
date = Time.parse(d).strftime("%B %d, %Y")
#=> "June 15, 2013"