Ruby Date & Time

Класс Time представляет дату и время в Ruby. Это тонкий слой над системной функцией даты и времени, предоставляемой операционной системой. Этот класс может не иметь возможности в вашей системе представлять даты до 1970 года или после 2038 года (UNIX-time).

Getting Current Date & Time (Получение текущей даты и времени):

Ниже приведен простой пример получения текущей даты и времени:

#!/usr/bin/ruby ​​-w

time1 = Time.new

puts "Текущее время:" + time1.inspect

# Time.now является синонимом:

time2 = Time.now

puts "Текущее время:" + time2.inspect

Это даст следующий результат:

Текущее время:2020-09-11 11:43:59 +0300

Текущее время:2020-09-11 11:43:59 +0300

Getting components of a Date & Time (Получение компонентов даты и времени):

Мы можем использовать объект Time для получения различных компонентов даты и времени. Ниже приведен пример, показывающий то же самое:

#!/usr/bin/ruby ​​-w

time = Time.new

# Компоненты времени

puts "Текущее время:" + time.inspect

puts time.year # => Год

puts time.month # => Месяц (от 1 до 12)

puts time.day # => Число месяца (от 1 до 31)

puts time.wday # => 0: День недели (начало): 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" : название часового пояса

Это даст следующий результат:

Текущее время:2020-09-11 11:53:11 +0300

2020

9

11

5

255

11

53

11

122000

Moscow Standard Time

Функции Time.utc, Time.gm и Time.local:

Эти две функции можно использовать для форматирования даты в стандартном формате следующим образом:

# 8 июля 2008 г. Time.local (2008, 7, 8)

# 8 июля 2008 г., 09:10 по местному времени

Time.local (2008, 7, 8, 9, 10)

# 8 июля 2008 г., 09:10 UTC

Time.utc (2008, 7, 8, 9, 10)

# 8 июля 2008 г., 09:10:11 GMT (то же, что и UTC)

Time.gm (2008, 7, 8, 9, 10, 11)

Ниже приведен пример получения всех компонентов в массиве в следующем формате:

[сек, мин, час, день, месяц, год, wday, yday, isdst, зона]

Попробуйте следующее:

#!/usr/bin/ruby ​​-w

time = Time.new

values ​​= time.to_a

p values

Это даст следующий результат:

[56, 3, 12, 11, 9, 2020, 5, 255, false, "Moscow Standard Time"]

Этот массив можно передать функциям Time.utc или Time.local, чтобы получить следующий формат дат:

#!/usr/bin/ruby ​​-w

time = Time.new

values ​​= time.to_a

puts Time.utc(*values)

Это даст следующий результат:

2020-09-11 12:07:38 UTC

Followin - это способ получить внутреннее представление времени в секундах с (платформо-зависимой) эпохи:

# Возвращает количество секунд с начала эпохи

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 - это смещение на 0 секунд относительно времени UTC

time. zone # => "PST" (или что-то еще ваш часовой пояс)

time.isdst # => false: Если в UTC нет летнего времени.

time.utc? # => true: если t находится в часовом поясе UTC

time.localtime # Преобразовать в местный часовой пояс.

time.gmtime # Вернемся к UTC.

time.getlocal # Вернуть новый объект Time в локальной зоне

time.getutc # Вернуть новый объект Time в UTC

Formatting Time & Date:

Есть разные способы форматирования даты и времени. Вот один пример, показывающий несколько:

#!/usr/bin/ruby ​​-w

time = Time.new

puts time.to_s

puts time.ctime

puts time.localtime

puts time.strftime ( "%Y-% m-% d %:qH:% M:% S" )

Это даст следующий результат:

2020-09-11 13:18:35 +0300

Fri Sep 11 13:18:35 2020

2020-09-11 13:18:35 +0300

2020-09-11 13:18:35

Директивы форматирования времени:

Эти директивы в следующей таблице используются с методом Time.strftime.

Директива Описание

%a Сокращенное название дня недели (Sun).%A Полное название дня недели (воскресенье).%b Сокращенное название месяца (Jan).%B Полное название месяца (Январь).%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 День недели неделя (воскресенье - от 0, от 0 до 6).%x Предпочтительное представление только для даты, без времени.%X Рекомендуемое представление только для времени, без даты.%y Год без века (от 00 до 99).%Y Год с веком.%Z Имя Time зоны. %% Cимвол %.

Арифметика времени:

Вы можете выполнять простую арифметику со временем следующим образом:

now = Time.now # Текущее время

past = now - 10 # 10 секунд назад. Время - число => Время

future = now + 10 # Через 10 секунд. Время + число => Время

future = now # => 10 Time - Time => number of seconds