4.40. kink/datetime/OFFSET

Provides `offset` type, which is offset of civil time from UTC.

4.40.1. type offset

A offset is an offset of civil time from UTC in Java Time-Scale, with minute precision.

The range of offset is [UTC-18:00, UTC+18:00].

Example:

:OFFSET.require_from('kink/datetime/')

:Utc <- OFFSET.new(0)
stdout.print_line(Utc.sign.repr)    # => "+"
stdout.print_line(Utc.hour.repr)    # => 0
stdout.print_line(Utc.minute.repr)  # => 0

:Plus_8_45 <- OFFSET.new(525)
stdout.print_line(Plus_8_45.sign.repr)    # => "+"
stdout.print_line(Plus_8_45.hour.repr)    # => 8
stdout.print_line(Plus_8_45.minute.repr)  # => 45

:Minus_2_30 <- OFFSET.new(-150)
stdout.print_line(Minus_2_30.sign.repr)   # => "-"
stdout.print_line(Minus_2_30.hour.repr)   # => 2
stdout.print_line(Minus_2_30.minute.repr) # => 30

4.40.1.1. O.op_eq(Arg)

Two offsets are equal when they have the same total minutes.

4.40.1.2. O.total_minutes

“total_minutes” method returns the offset as minutes.

4.40.1.3. O.sign

“sign” method returns the sign mark of the offset.

The method returns "+" if the offset is greater than or equal to zero, or "-" if it is less than zero.

For example,

• Returns "+" for +00:00

• Returns "+" for +08:45

• Returns "-" for -02:30

4.40.1.4. O.hour

“hour” method returns the hour part of the offset when it is analyzed to the sign, hours and minutes.

For example,

• Returns 0 for +00:00

• Returns 8 for +08:45

• Returns 2 for -02:30

Postcondition:

• The result is an int num which is in the range [0, 18]

4.40.1.5. O.minute

“minute” method returns the minute part of the offset when it is analyzed to the sign, hours and minutes.

For example,

• Returns 0 for +00:00

• Returns 45 for +08:45

• Returns 30 for -02:30

Postcondition:

• The result is an int num which is in the range [0, 59]

4.40.1.6. O.repr

`repr` method returns the string representation of the offset.

For example,

• Returns "(offset +00:00)" for +00:00

• Returns "(offset +08:45)" for +08:45

• Returns "(offset -02:30)" for -02:30

4.40.2. OFFSET.new(Total_minutes)

`new` fun makes a `offset` val with Total_minutes as the offset in minutes from UTC.

Preconditions:

• Total_minutes must be an int num

• Total_minutes must be greater than or equal to -1080 (UTC-18:00)

• Total_minutes must be less than or equal to 1080 (UTC+18:00)

4.40.3. OFFSET.is?(Val)

OFFSET.is? returns whether Val is a `offset` val.