Ruby中Time对象的常用函数总结
时间对象.Time.now返回当前时间.
1、Time.at
Time.at(time[,usec])
返回time所指时间的Time对象.time可以是Time对象,也可以是表示自起算时间以来的秒数的整数或浮点数.
若浮点精度不够时,可以使用usec.它将返回time+(usec/1000000)所表示的时间.此时,time和usec都必需是整数.
生成的Time对象将使用地方时的时区.
2、Time.gm、Time.utc
Time.gm(year[,mon[,day[,hour[,min[,sec[,usec]]]]]]) Time.gm(sec,min,hour,mday,mon,year,wday,yday,isdst,zone) Time.utc(year[,mon[,day[,hour[,min[,sec[,usec]]]]]]) Time.utc(sec,min,hour,mday,mon,year,wday,yday,isdst,zone)
返回由参数指定的协调世界时的Time对象.第1参数后面的全是可选参数.若省略这些参数的话,将使用最小的可能值.
这些参数也可以处理字符串.
例:
pTime.gm*"2002-03-17".split("-")[v1]#=>SunMar1700:00:00UTC2002
等价于
pTime.gm(*"2002-03-17".split("-"))
rails中可以通过parse由字符串可以直接转化为时间
pTime.parse(“2002-03-17”)#=>SunMar1700:00:00+0800[v2]2002
3、Time.local、Time.mktime
Time.local(year[,mon[,day[,hour[,min[,sec[,usec]]]]]]) Time.local(sec,min,hour,mday,mon,year,wday,yday,isdst,zone) Time.mktime(year[,mon[,day[,hour[,min[,sec[,usec]]]]]]) Time.mktime(sec,min,hour,mday,mon,year,wday,yday,isdst,zone)
返回由参数指定的地方时的Time对象.
4、Time.new、Time.now
返回当前时间的Time对象.new与now的区别在于,它会调用initialize.
5、Time.times
Time.times((<obsolete>))
以Struct::Tms的形式返回自身进程和其子进程所消耗的用户/系统CPU时间情况.Struct::Tms是结构体类,它有下列成员.
utime#usertime stime#systemtime cutime#usertimeofchildren cstime#systemtimeofchildren
采用浮点数的形式来表示时间,其单位为秒.
6、self+other
返回self之后other秒钟的那个时间.
7、self-other
若other是Time对象的话,就以Float形式返回这二者间的时间差,单位是秒.若other是数值时,就返回self之前other秒钟的那个时间.
8、self<=>other
时间的比较.other必需是Time对象或数值.若是数值的话,就把它当做自起算时间以来经过的秒数,然后进行比较.
9、asctime、ctime
将时间变为asctime形式的字符串.但不包含末尾的\n.
10、gmt?、utc?
若self的时区是协调世界时的话,就返回真.
11、getgm、getutc
新生成并返回一个时区设为协调世界时的Time对象.
12、getlocal
新生成并返回一个时区设为地方时的Time对象.
13、gmtime、utc
将时区设为协调世界时.返回self.
调用该方法之后,将以协调世界时的方式来处理时间变换的问题.若想显示协调世界时的话,可以这样.
14、localtime
将时区设为地方时(默认).返回self.
调用该方法之后,将以协调地方时的方式来处理时间变换的问题.
时间格式化指令:
%a 星期几名称的缩写(比如Sun)。
%A 星期几名称的全称(比如Sunday)。
%b 月份名称的缩写(比如Jan)。
%B 月份名称的全称(比如January)。
%c 优选的本地日期和时间表示法。
%d 一个月中的第几天(01到31)。
%H 一天中的第几小时,24小时制(00到23)。
%I 一天中的第几小时,12小时制(01到12)。
%j 一年中的第几天(001到366)。
%m 一年中的第几月(01到12)。
%M 小时中的第几分钟(00到59)。
%p 子午线指示(AM或PM)。
%S 分钟中的第几秒(00或60)。
%U 当前年中的周数,从第一个星期日(作为第一周的第一天)开始(00到53)。
%W 当前年中的周数,从第一个星期一(作为第一周的第一天)开始(00到53)。
%w 一星期中的第几天(Sunday是0,0到6)。
%x 只有日期没有时间的优先表示法。
%X 只有时间没有日期的优先表示法。
%y 不带世纪的年份表示(00到99)。
%Y 带有世纪的年份。
%Z 时区名称
用法:
Time.now.strftime("%Y-%m-%d%H:%M:%S") =>2015-09-2422:20:26
几个经常用的还是很好记的,其他用的时候查查就行了,当然记住最好啦,我是记不全的。
PS:可以使用Time对象来获取各种日期和时间的组件。
请看下面的实例:
time=Time.new
putstime.year =>日期的年份
putstime.month =>日期的月份(1到12)
putstime.day =>一个月中的第几天(1到31)
putstime.wday =>一周中的星期几(0是星期日)
putstime.yday =>365:一年中的第几天
putstime.hour =>23:24小时制
putstime.min =>59
putstime.sec =>59
putstime.usec =>999999:微秒
putstime.zone =>"UTC":时区名称
时间算法
now=Time.now#当前时间 past=now-10#10秒之前。Time-number=>Time future=now+10#从现在开始10秒之后。Time+number=>Time diff=future-now#=>10Time-Time=>秒数
上述是在ruby中的时间算法.
平时我们在rails中还是经常用到下面这些的:
now=Time.now past1=now-10.day past2=now-10.month past3=now-10.year
这些还是很实用的方法,数字+.时间表示方法来表示,10.day其实是转换成了10×24×60×60秒。rails提供了这些方法的类。