# struct `SF::Time`inherits `Struct`#

Represents a time value

`SF::Time` encapsulates a time value in a flexible way. It allows to define a time value either as a number of seconds, milliseconds or microseconds. It also works the other way round: you can read a time value as either a number of seconds, milliseconds or microseconds.

By using such a flexible interface, the API doesn't impose any fixed type or resolution for time values, and let the user choose its own favorite representation.

Time values support the usual mathematical operations: you can add or subtract two times, multiply or divide a time by a number, compare two times, etc.

Since they represent a time span and not an absolute time value, times can also be negative.

Usage example:

``````t1 = SF.seconds(0.1)
milli = t1.as_milliseconds # 100

t2 = SF.milliseconds(30)
micro = t2.as_microseconds # 30000

t3 = SF.microseconds(-800000)
sec = t3.as_seconds # -0.8
``````

``````def update(elapsed : SF::Time)
@position += @speed * elapsed.as_seconds
end

update(SF.milliseconds(100))
``````

See also: `SF::Clock`

## Constants#

### ``` Zero = new ```#

Predefined "zero" time value

## Class methods#

### ``` .new ```#

Default constructor

Sets the time value to zero.

View source

## Methods#

### ``` #!=(right : Time) : Bool ```#

Overload of != operator to compare two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: True if both time values are different

View source

### ``` #%(right : Time) : Time ```#

Overload of binary % operator to compute remainder of a time value

• left - Left operand (a time)
• right - Right operand (a time)

Returns: left modulo right

View source

### ``` #*(right : Number) : Time ```#

Overload of binary * operator to scale a time value

• left - Left operand (a time)
• right - Right operand (a number)

Returns: left multiplied by right

View source

### ``` #*(right : Int) : Time ```#

Overload of binary * operator to scale a time value

• left - Left operand (a time)
• right - Right operand (a number)

Returns: left multiplied by right

View source

### ``` #+(right : Time) : Time ```#

• left - Left operand (a time)
• right - Right operand (a time)

Returns: Sum of the two times values

View source

### ``` #-(right : Time) : Time ```#

Overload of binary - operator to subtract two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: Difference of the two times values

View source

### ``` #- : Time ```#

Overload of unary - operator to negate a time value

• right - Right operand (a time)

Returns: Opposite of the time value

View source

### ``` #/(right : Number) : Time ```#

Overload of binary / operator to scale a time value

• left - Left operand (a time)
• right - Right operand (a number)

Returns: left divided by right

View source

### ``` #/(right : Int) : Time ```#

Overload of binary / operator to scale a time value

• left - Left operand (a time)
• right - Right operand (a number)

Returns: left divided by right

View source

### ``` #/(right : Time) : Float32 ```#

Overload of binary / operator to compute the ratio of two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: left divided by right

View source

### ``` #<(right : Time) : Bool ```#

Overload of < operator to compare two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: True if left is lesser than right

View source

### ``` #<=(right : Time) : Bool ```#

Overload of <= operator to compare two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: True if left is lesser or equal than right

View source

### ``` #==(right : Time) : Bool ```#

Overload of == operator to compare two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: True if both time values are equal

View source

### ``` #>(right : Time) : Bool ```#

Overload of > operator to compare two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: True if left is greater than right

View source

### ``` #>=(right : Time) : Bool ```#

Overload of >= operator to compare two time values

• left - Left operand (a time)
• right - Right operand (a time)

Returns: True if left is greater or equal than right

View source

### ``` #as_microseconds : Int64 ```#

Return the time value as a number of microseconds

Returns: Time in microseconds

View source

### ``` #as_milliseconds : Int32 ```#

Return the time value as a number of milliseconds

Returns: Time in milliseconds

View source

### ``` #as_seconds : Float32 ```#

Return the time value as a number of seconds

Returns: Time in seconds

View source

### ``` #dup : Time ```#

Returns a shallow copy of this object.

Because `Value` is a value type, this method returns `self`, which already involves a shallow copy of this object because value types are passed by value.

View source