Time/NTP Module

Since Origin / Contributor Maintainer Source
2018-11-25 Skirmantas Lauzikas Skirmantas Lauzikas time.c

This module offers facilities for converting between Unix time and calendar, setting/getting system time, locale and control of NTP client.

time.cal2epoch()

Converts calendar table to a timestamp in Unix epoch

Syntax

time.cal2epoch(calendar)

Parameters

  • calendar Table containing calendar info.
    • year 1970 ~ 2038
    • mon month 1 ~ 12 in current year
    • day day 1 ~ 31 in current month
    • hour
    • min
    • sec

Returns

number of seconds since the Epoch

Example

calendar={}
calendar.year = 2018-11-20
calendar.mon = 11
calendar.day = 20
calendar.hour = 1
calendar.min = 40
calendar.sec = 50

timestamp = time.cal2epoch(calendar)
time.set(timestamp)

time.epoch2cal()

Converts timestamp in Unix epoch to calendar format

Syntax

time.epoch2cal(time)

Parameters

  • time number of seconds since the Epoch

Returns

A table containing the fields:

  • year 1970 ~ 2038
  • mon month 1 ~ 12 in current year
  • day day 1 ~ 31 in current month
  • hour
  • min
  • sec
  • yday day 1 ~ 366 in current year
  • wday day 1 ~ 7 in current weak (Sunday is 1)
  • dst day time adjustment:
    • 1 (DST in effect, i.e. daylight time)
    • 0 (DST not in effect, i.e. standard time)
    • -1 (Unknown DST status)

Example

--Gets current time calendar format, no locale adjustment
time = time.epoch2cal(time.get())
print(string.format("%04d-%02d-%02d %02d:%02d:%02d DST:%d", time["year"], time["mon"], time["day"], time["hour"], time["min"], time["sec"], time["dst"]))

time.get()

Returns current system time in the Unix epoch (seconds from midnight 1970/01/01).

Syntax

time.get()

Parameters

none

Returns

A two-value timestamp consisting of:

  • sec seconds since the Unix epoch
  • usec the microseconds part

Example

sec, usec = time.get()

See also

time.epch2cal()

time.getlocal()

Returns current system time adjusted for the locale in calendar format.

Syntax

time.getlocal()

Parameters

none

Returns

A table containing the fields:

  • year 1970 ~ 2038
  • mon month 1 ~ 12 in current year
  • day day 1 ~ 31 in current month
  • hour
  • min
  • sec
  • yday day 1 ~ 366 in current year
  • wday day 1 ~ 7 in current weak (Sunday is 1)
  • dst day time adjustment:
    • 1 (DST in effect, i.e. daylight time)
    • 0 (DST not in effect, i.e. standard time)
    • -1 (Unknown DST status)

Example

localTime = time.getlocal()
print(string.format("%04d-%02d-%02d %02d:%02d:%02d DST:%d", localTime["year"], localTime["mon"], localTime["day"], localTime["hour"], localTime["min"], localTime["sec"], localTime["dst"]))

time.initntp()

Initializes and starts NTP client

Syntax

time.initntp([ntpAddr])

Parameters

  • ntpAddr address of a NTP server, defaults to "pool.ntp.org" if none is specified

Returns

nil

Example

time.initntp("pool.ntp.org")

time.ntpenabled()

Checks if NTP client is enabled.

Syntax

time.ntpenabled()

Parameters

none

Returns

true if NTP client is enabled.

time.ntpstop()

Stops NTP client.

Syntax

time.ntpstop()

Parameters

none

Returns

nil

time.set()

Sets system time to a given timestamp in the Unix epoch (seconds from midnight 1970/01/01).

Syntax

time.set(time)

Parameters

  • time number of seconds since the Epoch

Returns

nil

Example

--set time to 2018-11-20 01:40:50
time.set(1542678050)

See also

time.cal2epoc()

time.settimezone()

Sets correct format for Time Zone locale

Syntax

time.settimezone(timezone)

Parameters

Returns

nil

Example

--set timezone to Eastern Standard Time
time.settimezone("EST+5")