Ruby - Ngày và giờ
Các Timelớp đại diện cho ngày và giờ trong Ruby. Nó là một lớp mỏng bên trên chức năng ngày và giờ của hệ thống do hệ điều hành cung cấp. Lớp này có thể không thể hiển thị các ngày trước năm 1970 hoặc sau năm 2038 trên hệ thống của bạn.
Chương này giúp bạn làm quen với tất cả các khái niệm ngày và giờ mong muốn nhất.
Lấy ngày và giờ hiện tại
Sau đây là ví dụ đơn giản để lấy ngày và giờ hiện tại -
#!/usr/bin/ruby -w
time1 = Time.new
puts "Current Time : " + time1.inspect
# Time.now is a synonym:
time2 = Time.now
puts "Current Time : " + time2.inspect
Điều này sẽ tạo ra kết quả sau:
Current Time : Mon Jun 02 12:02:39 -0700 2008
Current Time : Mon Jun 02 12:02:39 -0700 2008
Nhận các thành phần của ngày và giờ
Chúng ta có thể sử dụng đối tượng Thời gian để lấy các thành phần khác nhau của ngày và giờ. Sau đây là ví dụ hiển thị tương tự -
#!/usr/bin/ruby -w
time = Time.new
# Components of a Time
puts "Current Time : " + time.inspect
puts time.year # => Year of the date
puts time.month # => Month of the date (1 to 12)
puts time.day # => Day of the date (1 to 31 )
puts time.wday # => 0: Day of week: 0 is Sunday
puts time.yday # => 365: Day of year
puts time.hour # => 23: 24-hour clock
puts time.min # => 59
puts time.sec # => 59
puts time.usec # => 999999: microseconds
puts time.zone # => "UTC": timezone name
Điều này sẽ tạo ra kết quả sau:
Current Time : Mon Jun 02 12:03:08 -0700 2008
2008
6
2
1
154
12
3
8
247476
UTC
Các hàm Time.utc, Time.gm và Time.local
Hai hàm này có thể được sử dụng để định dạng ngày tháng theo định dạng chuẩn như sau:
# July 8, 2008
Time.local(2008, 7, 8)
# July 8, 2008, 09:10am, local time
Time.local(2008, 7, 8, 9, 10)
# July 8, 2008, 09:10 UTC
Time.utc(2008, 7, 8, 9, 10)
# July 8, 2008, 09:10:11 GMT (same as UTC)
Time.gm(2008, 7, 8, 9, 10, 11)
Dưới đây là ví dụ để lấy tất cả các thành phần trong một mảng ở định dạng sau:
[sec,min,hour,day,month,year,wday,yday,isdst,zone]
Hãy thử những điều sau -
#!/usr/bin/ruby -w
time = Time.new
values = time.to_a
p values
Điều này sẽ tạo ra kết quả sau:
[26, 10, 12, 2, 6, 2008, 1, 154, false, "MST"]
Mảng này có thể được chuyển cho các hàm Time.utc hoặc Time.local để có định dạng ngày tháng khác nhau như sau:
#!/usr/bin/ruby -w
time = Time.new
values = time.to_a
puts Time.utc(*values)
Điều này sẽ tạo ra kết quả sau:
Mon Jun 02 12:15:36 UTC 2008
Sau đây là cách để tính thời gian được biểu thị nội bộ dưới dạng giây kể từ kỷ nguyên (phụ thuộc vào nền tảng) -
# Returns number of seconds since epoch
time = Time.now.to_i
# Convert number of seconds into Time object.
Time.at(time)
# Returns second since epoch which includes microseconds
time = Time.now.to_f
Múi giờ và Giờ tiết kiệm ánh sáng ban ngày
Bạn có thể sử dụng đối tượng Thời gian để nhận tất cả thông tin liên quan đến Múi giờ và tiết kiệm ánh sáng ban ngày như sau:
time = Time.new
# Here is the interpretation
time.zone # => "UTC": return the timezone
time.utc_offset # => 0: UTC is 0 seconds offset from UTC
time.zone # => "PST" (or whatever your timezone is)
time.isdst # => false: If UTC does not have DST.
time.utc? # => true: if t is in UTC time zone
time.localtime # Convert to local timezone.
time.gmtime # Convert back to UTC.
time.getlocal # Return a new Time object in local zone
time.getutc # Return a new Time object in UTC
Định dạng thời gian và ngày
Có nhiều cách khác nhau để định dạng ngày và giờ. Đây là một ví dụ cho thấy một vài -
#!/usr/bin/ruby -w
time = Time.new
puts time.to_s
puts time.ctime
puts time.localtime
puts time.strftime("%Y-%m-%d %H:%M:%S")
Điều này sẽ tạo ra kết quả sau:
Mon Jun 02 12:35:19 -0700 2008
Mon Jun 2 12:35:19 2008
Mon Jun 02 12:35:19 -0700 2008
2008-06-02 12:35:19
Hướng dẫn định dạng thời gian
Các lệnh này trong bảng sau được sử dụng với phương thức Time.strftime .
Sr.No. | Chỉ thị & Mô tả |
---|---|
1 | %a Tên viết tắt của ngày trong tuần (Mặt trời). |
2 | %A Tên đầy đủ của các ngày trong tuần (Chủ nhật). |
3 | %b Tên tháng viết tắt (Jan). |
4 | %B Tên tháng đầy đủ (tháng 1). |
5 | %c Biểu diễn ngày và giờ địa phương ưa thích. |
6 | %d Ngày trong tháng (01 đến 31). |
7 | %H Giờ trong ngày, đồng hồ 24 giờ (00 đến 23). |
số 8 | %I Giờ trong ngày, đồng hồ 12 giờ (01 đến 12). |
9 | %j Ngày trong năm (001 đến 366). |
10 | %m Tháng trong năm (01 đến 12). |
11 | %M Phút của giờ (00 đến 59). |
12 | %p Chỉ báo kinh tuyến (AM hoặc PM). |
13 | %S Giây của phút (00 đến 60). |
14 | %U Số tuần của năm hiện tại, bắt đầu với Chủ nhật đầu tiên là ngày đầu tiên của tuần đầu tiên (00 đến 53). |
15 | %W Số tuần của năm hiện tại, bắt đầu với thứ Hai đầu tiên là ngày đầu tiên của tuần đầu tiên (00 đến 53). |
16 | %w Ngày trong tuần (Chủ nhật là 0, 0 đến 6). |
17 | %x Đại diện ưu tiên cho ngày một mình, không có thời gian. |
18 | %X Đại diện ưu tiên cho thời gian một mình, không có ngày. |
19 | %y Năm không có một thế kỷ (00 đến 99). |
20 | %Y Năm với thế kỷ. |
21 | %Z Tên múi giờ. |
22 | %% Ký tự% theo nghĩa đen. |
Số học thời gian
Bạn có thể thực hiện số học đơn giản với thời gian như sau:
now = Time.now # Current time
puts now
past = now - 10 # 10 seconds ago. Time - number => Time
puts past
future = now + 10 # 10 seconds from now Time + number => Time
puts future
diff = future - past # => 10 Time - Time => number of seconds
puts diff
Điều này sẽ tạo ra kết quả sau:
Thu Aug 01 20:57:05 -0700 2013
Thu Aug 01 20:56:55 -0700 2013
Thu Aug 01 20:57:15 -0700 2013
20.0