English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Time Класс в Ruby используется для представления даты и времени. Он основан на системной дате и времени, предоставляемой операционной системой. Этот класс может не представлять даты до 1970 года или после 2038 года.
Этот учебник познакомит вас с основными концепциями даты и времени.
Вот пример простого получения текущей даты и времени:
#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time1 = Time.new puts "Текущее время: " + time1.inspect # Функция Time.now идентична time2 = Time.now puts "Текущее время: " + time2.inspect
Результат выполнения примера выше:
Текущее время: 2015-09-17 15:23:14 +0800 Текущее время: 2015-09-17 15:23:14 +0800
Мы можем использовать Time Объект используется для получения различных компонентов даты и времени. См. следующий пример:
#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time = Time.new # Компоненты Time puts "Текущее время: " + time.inspect puts time.year # => год puts time.month # => месяц в году (1 до 12) puts time.day # => день в месяце (1 до 31) puts time.wday # => день недели в неделке (0 - воскресенье) puts time.yday # => 365: день в году puts time.hour # => 23:24: часовой формат puts time.min # => 59 puts time.sec # => 59 puts time.usec # => 999999: микросекунды puts time.zone # => "UTC": имя часового пояса
Результат выполнения примера выше:
Текущее время: 2015-09-17 15:24:44 +0800 2015 9 17 4 260 15 24 44 921519 CST
Эти функции можно использовать для форматирования стандартных форматов даты, как показано ниже:
# July 8, 2008 Time.local(2008, 7, 8) # July 8, 2008, 09:10am,местное время 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 (тоже, что и UTC) 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 p values
Результат выполнения примера выше:
[39, 25, 15, 17, 9, 2015, 4, 260, false, "CST"]
Этот массив можно передать в Time.utc или Time.local Функция для получения различных форматов даты, как показано ниже:
#!/usr/bin/ruby -w time = Time.new values = time.to_a puts Time.utc(*values)
Результат выполнения примера выше:
2015-09-17 15:26:09 UTC
Ниже приведены способы получения времени, секунд с эры (platform-dependent):
# Возврат секунд с эры time = Time.now.to_i # Преобразование секунд в объект Time Time.at(time) # Возврат секунд с эры, включая микросекунды time = Time.now.to_f
Вы можете использовать Time Объект для получения всех информации о часовых поясах и летнем времени, как показано ниже:
time = Time.new # Здесь объяснение time.zone # => "UTC":Возврат часового пояса time.utc_offset # => 0:UTC относителен к UTC с 0 секундной смещением time.zone # => "PST"(или другой часовой пояс) time.isdst # => false:Если UTC не имеет DST(летнее время) time.utc? # => true:Если в UTC-часовом поясе time.localtime # Преобразование в местное времяzones time.gmtime # Преобразует обратно в UTC time.getlocal # Возвращает новый объект Time в текущем часовом поясе time.getutc # Возвращает новый объект Time в UTC
Есть несколько способов форматировать дату и время. В этом примере показаны некоторые из них:
#!/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")
Результат выполнения примера выше:
2015-09-17 15:26:42 +0800 Thu Sep 17 15:26:42 2015 2015-09-17 15:26:42 +0800 2015-09-17 15:26:42
Ниже приведены инструкции и методы, перечисленные в таблице: Time.strftime Использование вместе
Инструкции | Описание |
---|---|
%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 | Год без centuries (00 до 99). |
%Y | Год с centuries. |
%Z | Название часового пояса. |
%% | % символ. |
Вы можете использовать время для выполнения простых арифметических действий, например:
now = Time.now # Текущее время puts now past = now - 10 # 10 секунд до текущего времени Time - number => Time puts past future = now + 10 # Через 10 секунд после текущего времени Time + number => Time puts future diff = future - now # => 10 Time - Time => количество секунд puts diff
Результат выполнения примера выше:
2015-09-17 15:27:08 +0800 2015-09-17 15:26:58 +0800 2015-09-17 15:27:18 +0800 10.0