Ruby中Time的常用函數


 

 

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參數后面的全是可選參數. 若省略這些參數的話,將使用最小的可能值.

這些參數也可以處理字符串.

例:

p Time.gm *"2002-03-17".split("-")[v1]   # => Sun Mar 17 00:00:00UTC 2002

等價於p Time.gm(*"2002-03-17".split("-"))

rails中可以通過parse由字符串可以直接轉化為時間

p Time.parse(“2002-03-17”)       #=> Sun Mar 17 00: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           # user time

stime           # system time

cutime          # user time ofchildren

cstime          # system timeof children

采用浮點數的形式來表示時間,其單位為秒. 

 

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.

調用該方法之后, 將以協調地方時的方式來處理時間變換的問題.

 

15、strftime(format)

按照format字符串的模式,將時間變為字符串,並返回結果. format字符串可以使用下列形式.

 

%A: 星期幾的名稱(Sunday, Monday... )

%a: 星期幾的簡稱(Sun, Mon ... )

%B: 月份的名稱(January, February... )

%b: 月份的簡稱(Jan, Feb ... )

%c: 日期和時間

%d: 日期(01-31)

%H: 24時制的小時(00-23)

%I: 12時制的小時(01-12)

%j: 一年中的第幾天(001-366)

%M: 分鍾(00-59)

%m: 表示月份的數字(01-12)

%p: 上午/下午(AM,PM)

%S: 秒鍾(00-60) (60是閏秒)

%U: 表示周的數字.以第一個星期天作為第一周的開始(00-53)

%W: 表示周的數字.以第一個星期一作為第一周的開始(00-53)

%w: 表示星期幾的數字. 星期天是0(0-6)

%X: 時刻

%x: 日期

%Y: 表示公歷年份的數字

%y: 公歷年份的后兩位數字(00-99)

%Z: 時區trap

%%: %本身

 

16、sec、min、hour、mday、day (mday 的別名)、mon、month (mon 的別名)

17、year、wday、yday、isdst、dst? (isdst 的別名)、zone

返回時間的要素.

 

hour, min, sec: 以整數形式返回時、分、秒.

year, month(mon), day(mday): 以整數形式返回年、月、日.

wday: 以0(星期日)到6(星期六)之間的整數返回星期幾.

yday: 以整數(1到366)的形式返回某天是一年中的第幾天,以1月1日作為第1天.

isdst(dst?): 若為夏令時就返回 true,否則返回 false.

zone: 返回表示時區的字符串.

 

18、succ

將self加上1秒鍾以后生成並返回一個Time對象. 時區采用地方時.

例:

t = Time.now

p t

p t.succ

# => Sun Jul 18 01:41:22 JST 2004

     Sun Jul 18 01:41:23 JST2004

 

19、to_a

以一個包括10個元素的數組的形式返回某時間. 數組元素的排列如下.

 

sec: 秒 (整數 0-60)

min: 分 (整數 0-60)

hour: 時 (整數 1-24)

mday: 日 (整數)

mon: 月 (整數 1-12)

year: 年 (整數 2000鉗=2000)

wday: 星期幾 (整數 0-6)

yday: 一年的第幾天 (整數 1-366)

isdst: 有無夏令時(true/false)

zone: 時區 (字符串)

 

p Time.now        # =>Mon Oct 20 06:02:10 JST 2003

p Time.now.to_a      # => [10, 2, 6, 20, 10, 2003, 1, 293,false, "JST"]

 

20、to_f

以浮點數形式返回自起算時間以來經過的秒數. 它可以表示那些非整秒的情況.

 

21、to_i、tv_sec

以整數形式返回自起算時間以來經過的秒數.

 

22、to_s

將某時刻變換為形如date(1)形式的字符串.

例:

p Time.now.to_s # => "Mon Oct 20 06:02:10 JST 2003"

 

23、usec、tv_usec

返回某時刻的微秒部分.

 

24時間基於時間度量的加減法在實際中會經常被用到:[v3]

rails中,

Time.now + 5.days

Time.now + 1.day

Time.now - 1.year

時間的定位方法

Time.now.beginning_of_week

Time.now.end_of_month

time_start = Time.now.beginning_of_month     #當前日期所在月的開始時間

time_end = Time.now.end_of_month                        #當前日期所在月的終止時間

循環

time_start+1.days

直到time.end


[v1]理解這個方法的實際含義,gm操作的實際是數組[2002,3,17]

[v2]時區的意思

[v3]在rails的環境下,寫個簡單的日歷方法,輸入某一天,返回其所在月的日期數組


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM