Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 on rails 在ruby中,有没有一种简单的方法可以从日期字符串中提取年份?_Ruby On Rails_Ruby_Date_Datetime - Fatal编程技术网

Ruby on rails 在ruby中,有没有一种简单的方法可以从日期字符串中提取年份?

Ruby on rails 在ruby中,有没有一种简单的方法可以从日期字符串中提取年份?,ruby-on-rails,ruby,date,datetime,Ruby On Rails,Ruby,Date,Datetime,可能是个愚蠢的问题。。。 我是ruby新手,最近我正在编写一个rake任务,将多个表合并成一个通用表。我需要做的一件事是从数据库中获取日期,然后将日期转换为两个整数,如年和月,然后将它们保存到两个单独的列中 上周我完成了这个任务文件,但不幸的是,这个文件被意外删除了,所以我不得不重新编写代码。我不记得我是如何操纵原始文件中的日期的,我认为我在原始文件中采用的方式比当前代码更简单。目前的代码如下 fetched_time=DateTime.strptime(pr.fetched_time,"%Y-

可能是个愚蠢的问题。。。 我是ruby新手,最近我正在编写一个rake任务,将多个表合并成一个通用表。我需要做的一件事是从数据库中获取日期,然后将日期转换为两个整数,如年和月,然后将它们保存到两个单独的列中

上周我完成了这个任务文件,但不幸的是,这个文件被意外删除了,所以我不得不重新编写代码。我不记得我是如何操纵原始文件中的日期的,我认为我在原始文件中采用的方式比当前代码更简单。目前的代码如下

fetched_time=DateTime.strptime(pr.fetched_time,"%Y-%m-%d")
dr.year =  fetched_time.strftime('%Y').to_i
dr.month = fetched_time.strftime('%m').to_i
我尝试了很多关键词来搜索,但是没有一个结果是有用的。以下代码是将日期字符串转换为整数的最佳方法吗

非常感谢。

可以,通过使用:


非常感谢你!这正是我想要的!简单明了。还有@MrYoshiji,谢谢你编辑我的代码格式!之所以要将其设置为字符串,是因为我只提取了年或月的部分,以从数据库中存储的日期中选择selectbox显示在网页上。我认为当我们从数据库读取日期时,返回的值总是字符串?
require 'date'

d = Date.parse("20-08-2013")
d.year # => 2013
now = Time.now.to_s
# => "2013-09-10 11:09:14 -0500"
fetched_time=DateTime.strptime(now, "%Y-%m-%d").to_s
# => "2013-09-10T00:00:00+00:00"
year =  Date.parse(fetched_time).year
# => 2013
month = Date.parse(fetched_time).month
# => 9
year.class
# => Fixnum
month.class
# => Fixnum
fetched_date=Date.strptime(now, "%Y-%m-%d").to_s
# => "2013-09-10"
date = Date.parse(fetched_date)
# => #<Date: 2013-09-10 ((2456546j,0s,0n),+0s,2299161j)>
Date.jd(2299161)
# => #<Date: 1582-10-15 ((2299161j,0s,0n),+0s,2299161j)>
Date.jd(2456546)
# => #<Date: 2013-09-10 ((2456546j,0s,0n),+0s,2299161j)>
Date::ITALY
# => 2299161