English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby Datum & Zeit (Date & Time)

Time Klasse in Ruby wird verwendet, um Datum und Uhrzeit darzustellen. Sie basiert auf dem von dem Betriebssystem bereitgestellten Systemdatum und -uhrzeit. Diese Klasse kann möglicherweise nicht darstellen 197oder 0 Jahren zuvor 2038 Datum nach dem Jahr

Dieses Tutorial wird Ihnen alle wichtigen Konzepte von Datum und Uhrzeit näherbringen.

Erstellen Sie das aktuelle Datum und die aktuelle Uhrzeit

以下是获取当前日期和时间的简单示例:

Online-Beispiel

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
 
time1 = Time.new
 
puts "当前时间:" + time1.inspect
 
# Time.now 功能相同
time2 = Time.now
puts "当前时间:" + time2.inspect

Die folgenden Beispiele sind die Ausgabeergebnisse:

当前时间: 2015-09-17 15:23:14 +0800
当前时间: 2015-09-17 15:23:14 +0800

获取 Date & Time 组件

我们可以使用 Time 对象用于获取各种日期和时间的组件。请看以下示例:

Online-Beispiel

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
 
time = Time.new
 
# Time 的组件
puts "当前时间:" + time.inspect
puts time.year  # => 日期的年份
puts time.month # => 日期的月份(1 bis 12)
puts time.day  # => 一个月中的第几天(1 bis 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":时区名称

Die folgenden Beispiele sind die Ausgabeergebnisse:

当前时间: 2015-09-17 15:24:44 +0800
2015
9
17
4
260
15
24
44
921519
CST

Time.utcTime.gmTime.local 函数

以下函数可用于格式化标准格式的日期,如下所示:

# 七月 8, 2008
Time.local(2008, 7, 8)  
# 七月 8, 2008, 09:10am,本地时间
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)

以下示例在数组中获取所有组件:

[sec, min, hour, day, month, year, wday, yday, isdst, zone]

尝试以下示例:

Online-Beispiel

#!/usr/bin/ruby -w
 
time = Time.new
 
values = time.to_a
p values

Die folgenden Beispiele sind die Ausgabeergebnisse:

[39, 25, 15, 17, 9, 2015, 4, 260, false, "CST"]

该数组可以被传递到 Time.utcTime.local 函数用于获取日期的不同格式,如下所示:

Online-Beispiel

#!/usr/bin/ruby -w
 
time = Time.new
 
values = time.to_a
puts Time.utc(*values)

Die folgenden Beispiele sind die Ausgabeergebnisse:

2015-09-17 15:26:09 UTC

以下是获取时间的方式,自纪元以来的秒数(平台相关):

# 返回自纪元以来的秒数
time = Time.now.to_i  
 
# 将秒数转换为 Time 对象
Time.at(time)
 
# 返回自纪元以来的秒数,包含微秒
time = Time.now.to_f

Zeitzone und Sommerzeit

Sie können Time Objekt, um alle Informationen über Zeitzone und Sommerzeit zu erhalten, wie folgt:

time = Time.new
 
# Hier ist die Erklärung
time.zone       # => "UTC":Rückgabe der Zeitzone
time.utc_offset # => 0:UTC ist 0 Sekunden Versatz相对于 UTC
time.zone       # => "PST" (oder andere Zeitzone)
time.isdst      # => false:Wenn UTC keine DST (Sommerzeit) hat
time.utc?       # => true:Wenn im UTC-Zeitraum
time.localtime  # Wandlung in die lokale Zeitzone
time.gmtime     # Wandlung in UTC
time.getlocal   # Rückgabe eines neuen Time-Objekts in der lokalen Zeitzone
time.getutc     # Rückgabe eines neuen Time-Objekts im UTC

Formatierung von Zeit und Datum

Es gibt mehrere Möglichkeiten, Datum und Zeit zu formatieren. Der folgende Beispiel zeigt einige davon:

Online-Beispiel

#!/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)

Die folgenden Beispiele sind die Ausgabeergebnisse:

2015-09-17 15:26:42 +0800
Do Sep 17 15:26:42 2015
2015-09-17 15:26:42 +0800
2015-09-17 15:26:42

Zeitformatierungsanweisung

Die in der folgenden Tabelle aufgelisteten Anweisungen und Methoden Time.strftime zusammen verwenden.

AnweisungBeschreibung
%aAbgekürzter Wochentagsname (z.B. Sun).
%AVollständiger Wochentagsname (z.B. Sunday).
%bAbgekürzter Monatname (z.B. Jan).
%BVollständiger Monatname (z.B. January).
%cBevorzugte lokale Datums- und Zeitdarstellung.
%dTag des Monats (01 bis 31)。
%HStunde des Tages (24 Zeitensystem (00 bis 23)。
%IStunde des Tages (12 Zeitensystem (01 bis 12)。
%jTag des Jahres (001 bis 366)。
%mMonat des Jahres (01 bis 12)。
%MMinute des Stunden (00 bis 59)。
%pMittag- oder Nachmittagshinweis (AM oder PM).
%SSekunde des Minuten (00 oder 60).
%UWoche des Jahres, beginnend mit dem ersten Sonntag (als erster Tag der ersten Woche) (00 bis 53)。
%WWoche des Jahres, beginnend mit dem ersten Montag (als erster Tag der ersten Woche) (00 bis 53)。
%wWoche der Woche (Sonntag ist 0, 0 bis 6)。
%xPrioritäres Format mit nur Datum, kein Zeit.
%XPrioritäres Format mit nur Zeit, kein Datum.
%yJahr ohne Jahrhundert (00 bis 99)。
%YJahr mit Jahrhundert.
%ZZeitzone-Name.
%%% Zeichen.

Zeit-Algorithmen

Man kann mit der Zeit einfache Arithmetik durchführen, wie folgt:

now = Time.now           # aktuelle Zeit
puts now
 
past = now - 10          # 10 Sekunden zuvor. Time - number => Time
puts past
 
future = now + 10        # von jetzt an 10 Sekunden später. Time + number => Time
puts future
 
diff = future - now      # => 10  Time - Time => Sekunden
puts diff

Die folgenden Beispiele sind die Ausgabeergebnisse:

2015-09-17 15:27:08 +0800
2015-09-17 15:26:58 +0800
2015-09-17 15:27:18 +0800
10.0