Ruby中处理时间的一些基本操作
获取当前日期和时间:
以下是一个简单的例子,以获得当前的日期和时间:
#!/usr/bin/ruby-w time1=Time.new puts"CurrentTime:"+time1.inspect #Time.nowisasynonym: time2=Time.now puts"CurrentTime:"+time2.inspect
这将产生以下结果:
CurrentTime:MonJun0212:02:39-07002008 CurrentTime:MonJun0212:02:39-07002008
获取组件的日期和时间:
我们可以用Time 对象来获取日期和时间的各个组成部分。下面的例子显示相同的:
#!/usr/bin/ruby-w time=Time.new #ComponentsofaTime puts"CurrentTime:"+time.inspect putstime.year#=>Yearofthedate putstime.month#=>Monthofthedate(1to12) putstime.day#=>Dayofthedate(1to31) putstime.wday#=>0:Dayofweek:0isSunday putstime.yday#=>365:Dayofyear putstime.hour#=>23:24-hourclock putstime.min#=>59 putstime.sec#=>59 putstime.usec#=>999999:microseconds putstime.zone#=>"UTC":timezonename
这将产生以下结果:
CurrentTime:MonJun0212:03:08-07002008 2008 6 2 1 154 12 3 8 247476 UTC
Time.utc,Time.gm和Time.local函数:
可用于这两个函数以标准格式来格式化日期如下:
#July8,2008 Time.local(2008,7,8) #July8,2008,09:10am,localtime Time.local(2008,7,8,9,10) #July8,2008,09:10UTC Time.utc(2008,7,8,9,10) #July8,2008,09:10:11GMT(sameasUTC) Time.gm(2008,7,8,9,10,11)
下面的例子,在一个数组来获取所有组件按以下格式:
[sec,min,hour,day,month,year,wday,yday,isdst,zone]
尝试以下操作:
#!/usr/bin/ruby-w time=Time.new values=time.to_a pvalues
这将产生以下结果:
[26,10,12,2,6,2008,1,154,false,"MST"]
这个数组可以传递给Time.utc或Time.local函数得到不同的日期格式如下:
#!/usr/bin/ruby-w time=Time.new values=time.to_a putsTime.utc(*values)
这将产生以下结果:
MonJun0212:15:36UTC2008
跟随着的方式来获得内部表示(依赖于平台)历元以来的秒数时间:
#Returnsnumberofsecondssinceepoch time=Time.now.to_i #ConvertnumberofsecondsintoTimeobject. Time.at(time) #Returnssecondsinceepochwhichincludesmicroseconds time=Time.now.to_f
时区和夏令时:
可以使用一个Time对象来获取相关的所有信息的时区和夏令如下:
time=Time.new #Hereistheinterpretation time.zone#=>"UTC":returnthetimezone time.utc_offset#=>0:UTCis0secondsoffsetfromUTC time.zone#=>"PST"(orwhateveryourtimezoneis) time.isdst#=>false:IfUTCdoesnothaveDST. time.utc?#=>true:iftisinUTCtimezone time.localtime#Converttolocaltimezone. time.gmtime#ConvertbacktoUTC. time.getlocal#ReturnanewTimeobjectinlocalzone time.getutc#ReturnanewTimeobjectinUTC
格式化时间和日期:
有各种各样的方式来格式化日期和时间。下面是一个例子,说明几个:
#!/usr/bin/ruby-w time=Time.new putstime.to_s putstime.ctime putstime.localtime putstime.strftime("%Y-%m-%d%H:%M:%S")
这将产生以下结果:
MonJun0212:35:19-07002008 MonJun212:35:192008 MonJun0212:35:19-07002008 2008-06-0212:35:19
时间算术:
可以在时间上做简单的算术如下:
now=Time.now#Currenttime putsnow past=now-10#10secondsago.Time-number=>Time putspast future=now+10#10secondsfromnowTime+number=>Time putsfuture diff=future-now#=>10Time-Time=>numberofseconds putsdiff
这将产生以下结果:
ThuAug0120:57:05-07002013 ThuAug0120:56:55-07002013 ThuAug0120:57:15-07002013 10.0