-1

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

d = myData.scan(/....\d*..\d{4}/)

例如,会产生“2013 年 6 月 15 日”,尽管这些日期会因实例而异。我想解析这些并将它们从月份缩写转换为整月。

这有效(需要“时间”):

Time.parse("Jun 15, 2013").strftime("%B %d, %Y")
=> "June 15, 2013"

但这不会:

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")
4

2 回答 2

2

将变量名放在引号中是行不通的。所以而不是:

Time.parse("d")

你必须使用:

Time.parse(d)

此外scan返回一个数组。

"Jun 15, 2013".scan(/....\d*..\d{4}/)     #=> ["Jun 15, 2013"]

append[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"
于 2013-06-20T22:00:01.093 回答
1

从@craigeley 提到的内容来看,如果d您的数据是:

Time.parse(d).strftime("%B %d, %Y")
于 2013-06-20T21:45:57.153 回答