datetime_module Module



Variables

Type Visibility Attributes Name Initial
real(kind=real64), public, parameter :: zero = 0._real64
real(kind=real64), public, parameter :: one = 1._real64
real(kind=real64), public, parameter :: d2h = 24._real64
real(kind=real64), public, parameter :: h2d = one/d2h
real(kind=real64), public, parameter :: d2m = d2h*60._real64
real(kind=real64), public, parameter :: m2d = one/d2m
real(kind=real64), public, parameter :: m2h = one/60
real(kind=real64), public, parameter :: s2d = m2d/60
real(kind=real64), public, parameter :: d2s = 86400._real64
real(kind=real64), public, parameter :: h2s = 3600._real64
real(kind=real64), public, parameter :: h2m = 60._real64
real(kind=real64), public, parameter :: s2h = one/h2s
real(kind=real64), public, parameter :: m2s = 60._real64
real(kind=real64), public, parameter :: s2m = one/m2s
integer, public, parameter :: MAXSTRLEN = 99
integer(kind=kind(calendarType)), private :: calendar = gregorian

Enumerations

enum, bind(c)

Enumerators

enumerator:: calendarType = 0
enumerator:: gregorian = 1
enumerator:: julian = 2
enumerator:: noLeaps = 3
enumerator:: three60day = 4

Interfaces

public interface datetime

  • public pure elemental function datetime_constructor(year, month, day, hour, minute, second, millisecond, tz)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in), optional :: year
    integer, intent(in), optional :: month
    integer, intent(in), optional :: day
    integer, intent(in), optional :: hour
    integer, intent(in), optional :: minute
    integer, intent(in), optional :: second
    integer, intent(in), optional :: millisecond
    real(kind=real64), intent(in), optional :: tz

    Return Value type(datetime)

public interface timedelta

  • public pure elemental function timedelta_constructor(days, hours, minutes, seconds, milliseconds)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in), optional :: days
    integer, intent(in), optional :: hours
    integer, intent(in), optional :: minutes
    integer, intent(in), optional :: seconds
    integer, intent(in), optional :: milliseconds

    Return Value type(timedelta)

interface

  • public function c_strftime(str, slen, format, tm) bind(c, name='strftime')

    Arguments

    Type IntentOptional Attributes Name
    character(kind=c_char, len=1), intent(out) :: str(*)
    integer(kind=c_int), intent(in), value :: slen
    character(kind=c_char, len=1), intent(in) :: format(*)
    type(tm_struct), intent(in) :: tm

    Return Value type(c_ptr)

interface

  • public function c_strptime(str, format, tm) bind(c,name='strptime')

    Arguments

    Type IntentOptional Attributes Name
    character(kind=c_char, len=1), intent(in) :: str(*)
    character(kind=c_char, len=1), intent(in) :: format(*)
    type(tm_struct), intent(out) :: tm

    Return Value integer(kind=c_int)


Derived Types

type, public ::  datetime

Components

Type Visibility Attributes Name Initial
integer, private :: year = 1
integer, private :: month = 1
integer, private :: day = 1
integer, private :: hour = 0
integer, private :: minute = 0
integer, private :: second = 0
integer, private :: millisecond = 0
real(kind=real64), private :: tz = 0

Constructor

public pure, elemental function datetime_constructor (year, month, day, hour, minute, second, millisecond, tz)

Type-Bound Procedures

procedure, public, pass(self) :: getYear
procedure, public, pass(self) :: getMonth
procedure, public, pass(self) :: getDay
procedure, public, pass(self) :: getHour
procedure, public, pass(self) :: getMinute
procedure, public, pass(self) :: getSecond
procedure, public, pass(self) :: getMillisecond
procedure, public, pass(self) :: getTz
procedure, public, pass(self) :: isocalendar
procedure, public, pass(self) :: isoformat
procedure, public, pass(self) :: isValid
procedure, public, nopass :: now
procedure, public, pass(self) :: secondsSinceEpoch
procedure, public, pass(self) :: strftime
procedure, public, pass(self) :: tm
procedure, public, pass(self) :: tzOffset
procedure, public, pass(self) :: isoweekday
procedure, public, pass(self) :: isoweekdayLong
procedure, public, pass(self) :: isoweekdayShort
procedure, public, pass(self) :: utc
procedure, public, pass(self) :: weekday
procedure, public, pass(self) :: weekdayLong
procedure, public, pass(self) :: weekdayShort
procedure, public, pass(self) :: yearday
procedure, private, pass(self) :: addMilliseconds
procedure, private, pass(self) :: addSeconds
procedure, private, pass(self) :: addMinutes
procedure, private, pass(self) :: addHours
procedure, private, pass(self) :: addDays
procedure, private, pass(d0) :: datetime_plus_timedelta
procedure, private, pass(d0) :: timedelta_plus_datetime
procedure, private, pass(d0) :: datetime_minus_datetime
procedure, private, pass(d0) :: datetime_minus_timedelta
procedure, private, pass(d0) :: datetime_eq
procedure, private, pass(d0) :: datetime_neq
procedure, private, pass(d0) :: datetime_gt
procedure, private, pass(d0) :: datetime_ge
procedure, private, pass(d0) :: datetime_lt
procedure, private, pass(d0) :: datetime_le
generic, public :: operator(+) => datetime_plus_timedelta, timedelta_plus_datetime
generic, public :: operator(-) => datetime_minus_datetime, datetime_minus_timedelta
generic, public :: operator(==) => datetime_eq
generic, public :: operator(/=) => datetime_neq
generic, public :: operator(>) => datetime_gt
generic, public :: operator(>=) => datetime_ge
generic, public :: operator(<) => datetime_lt
generic, public :: operator(<=) => datetime_le

type, public ::  timedelta

Components

Type Visibility Attributes Name Initial
integer, private :: days = 0
integer, private :: hours = 0
integer, private :: minutes = 0
integer, private :: seconds = 0
integer, private :: milliseconds = 0

Constructor

public pure, elemental function timedelta_constructor (days, hours, minutes, seconds, milliseconds)

Type-Bound Procedures

procedure, public, pass(self) :: getDays
procedure, public, pass(self) :: getHours
procedure, public, pass(self) :: getMinutes
procedure, public, pass(self) :: getSeconds
procedure, public, pass(self) :: getMilliseconds
procedure, public :: total_seconds
procedure, private :: timedelta_plus_timedelta
procedure, private :: timedelta_minus_timedelta
procedure, private :: unary_minus_timedelta
procedure, private :: timedelta_eq
procedure, private :: timedelta_neq
procedure, private :: timedelta_gt
procedure, private :: timedelta_ge
procedure, private :: timedelta_lt
procedure, private :: timedelta_le
generic, public :: operator(+) => timedelta_plus_timedelta
generic, public :: operator(-) => timedelta_minus_timedelta, unary_minus_timedelta
generic, public :: operator(==) => timedelta_eq
generic, public :: operator(/=) => timedelta_neq
generic, public :: operator(>) => timedelta_gt
generic, public :: operator(>=) => timedelta_ge
generic, public :: operator(<) => timedelta_lt
generic, public :: operator(<=) => timedelta_le

type, public, bind(c) ::  tm_struct

Components

Type Visibility Attributes Name Initial
integer(kind=c_int), public :: tm_sec = 0
integer(kind=c_int), public :: tm_min = 0
integer(kind=c_int), public :: tm_hour = 0
integer(kind=c_int), public :: tm_mday = 0
integer(kind=c_int), public :: tm_mon = 0
integer(kind=c_int), public :: tm_year = 0
integer(kind=c_int), public :: tm_wday = 0
integer(kind=c_int), public :: tm_yday = 0
integer(kind=c_int), public :: tm_isdst = 0

type, public ::  clock

Components

Type Visibility Attributes Name Initial
type(datetime), public :: startTime
type(datetime), public :: stopTime
type(datetime), public :: currentTime
type(timedelta), public :: tickInterval
logical, public :: alarm = .false.
logical, public :: started = .false.
logical, public :: stopped = .false.

Type-Bound Procedures

procedure, public :: reset
procedure, public :: tick

Functions

public pure elemental function datetime_constructor(year, month, day, hour, minute, second, millisecond, tz)

Arguments

Type IntentOptional Attributes Name
integer, intent(in), optional :: year
integer, intent(in), optional :: month
integer, intent(in), optional :: day
integer, intent(in), optional :: hour
integer, intent(in), optional :: minute
integer, intent(in), optional :: second
integer, intent(in), optional :: millisecond
real(kind=real64), intent(in), optional :: tz

Return Value type(datetime)

public pure elemental function getYear(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function getMonth(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function getDay(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function getHour(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function getMinute(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function getSecond(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function getMillisecond(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function getTz(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value real(kind=real64)

public pure elemental function isoformat(self, sep)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self
character(len=1), intent(in), optional :: sep

Return Value character(len=23)

public pure elemental function isValid(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value logical

public function now()

Arguments

None

Return Value type(datetime)

public pure elemental function weekday(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function isoweekday(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function weekdayLong(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value character(len=9)

public pure elemental function isoweekdayLong(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value character(len=9)

public pure elemental function weekdayShort(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value character(len=3)

public pure elemental function isoweekdayShort(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value character(len=3)

public function isocalendar(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer, (3)

public function secondsSinceEpoch(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer(kind=int64)

public function strftime(self, format)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self
character(len=*), intent(in) :: format

Return Value character(len=:), allocatable

public pure elemental function tm(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value type(tm_struct)

public pure elemental function tzOffset(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value character(len=5)

public pure elemental function utc(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value type(datetime)

public pure elemental function yearday(self)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: self

Return Value integer

public pure elemental function datetime_plus_timedelta(d0, t) result(d)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(timedelta), intent(in) :: t

Return Value type(datetime)

public pure elemental function timedelta_plus_datetime(t, d0) result(d)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: t
class(datetime), intent(in) :: d0

Return Value type(datetime)

public pure elemental function datetime_minus_timedelta(d0, t) result(d)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(timedelta), intent(in) :: t

Return Value type(datetime)

public pure elemental function datetime_minus_datetime(d0, d1) result(t)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(datetime), intent(in) :: d1

Return Value type(timedelta)

public pure elemental function datetime_gt(d0, d1) result(res)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(datetime), intent(in) :: d1

Return Value logical

public pure elemental function datetime_lt(d0, d1) result(res)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(datetime), intent(in) :: d1

Return Value logical

public pure elemental function datetime_eq(d0, d1) result(res)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(datetime), intent(in) :: d1

Return Value logical

public pure elemental function datetime_neq(d0, d1) result(res)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(datetime), intent(in) :: d1

Return Value logical

public pure elemental function datetime_ge(d0, d1) result(res)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(datetime), intent(in) :: d1

Return Value logical

public pure elemental function datetime_le(d0, d1) result(res)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(in) :: d0
class(datetime), intent(in) :: d1

Return Value logical

public pure elemental function isLeapYear(year)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: year

Return Value logical

public pure function nDeltas(d0, d1, t)

Arguments

Type IntentOptional Attributes Name
type(datetime), intent(in) :: d0
type(datetime), intent(in) :: d1
type(timedelta), intent(in) :: t

Return Value integer

public pure function datetimeRange(d0, d1, t)

Arguments

Type IntentOptional Attributes Name
type(datetime), intent(in) :: d0
type(datetime), intent(in) :: d1
type(timedelta), intent(in) :: t

Return Value type(datetime), allocatable, (:)

public pure elemental function daysInMonth(month, year)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: month
integer, intent(in) :: year

Return Value integer

public pure elemental function daysInYear(year)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: year

Return Value integer

public pure elemental function isNewDay(d)

Arguments

Type IntentOptional Attributes Name
type(datetime), intent(in) :: d

Return Value logical

public pure elemental function isNewMonth(d)

Arguments

Type IntentOptional Attributes Name
type(datetime), intent(in) :: d

Return Value logical

public pure elemental function isNewYear(d)

Arguments

Type IntentOptional Attributes Name
type(datetime), intent(in) :: d

Return Value logical

public pure elemental function date2num(d)

Arguments

Type IntentOptional Attributes Name
type(datetime), intent(in) :: d

Return Value real(kind=real64)

public pure elemental function num2date(num)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: num

Return Value type(datetime)

public function machinetimezone()

Arguments

None

Return Value real(kind=real64)

public function strptime(str, format, tz)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: str
character(len=*), intent(in) :: format
real(kind=real64), intent(in), optional :: tz

Return Value type(datetime)

public pure elemental function epochdatetime()

Arguments

None

Return Value type(datetime)

public pure elemental function localtime(epoch, tz)

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: epoch
real(kind=real64), intent(in) :: tz

local machine time zone information

Return Value type(datetime)

public pure elemental function gmtime(epoch)

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: epoch

Return Value type(datetime)

public pure elemental function tm2date(ctime, tz)

Arguments

Type IntentOptional Attributes Name
type(tm_struct), intent(in) :: ctime
real(kind=real64), intent(in), optional :: tz

Return Value type(datetime)

public pure function int2str(i, length)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: i
integer, intent(in) :: length

Return Value character(len=length)

public pure elemental function timedelta_constructor(days, hours, minutes, seconds, milliseconds)

Arguments

Type IntentOptional Attributes Name
integer, intent(in), optional :: days
integer, intent(in), optional :: hours
integer, intent(in), optional :: minutes
integer, intent(in), optional :: seconds
integer, intent(in), optional :: milliseconds

Return Value type(timedelta)

public pure elemental function getDays(self)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: self

Return Value integer

public pure elemental function getHours(self)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: self

Return Value integer

public pure elemental function getMinutes(self)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: self

Return Value integer

public pure elemental function getSeconds(self)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: self

Return Value integer

public pure elemental function getMilliseconds(self)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: self

Return Value integer

public pure elemental function total_seconds(self)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: self

Return Value real(kind=real64)

public pure elemental function timedelta_plus_timedelta(t0, t1) result(t)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: t0
class(timedelta), intent(in) :: t1

Return Value type(timedelta)

public pure elemental function timedelta_minus_timedelta(t0, t1) result(t)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: t0
class(timedelta), intent(in) :: t1

Return Value type(timedelta)

public pure elemental function unary_minus_timedelta(t0) result(t)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: t0

Return Value type(timedelta)

public pure elemental function timedelta_eq(td0, td1) result(res)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: td0
class(timedelta), intent(in) :: td1

Return Value logical

public pure elemental function timedelta_neq(td0, td1) result(res)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: td0
class(timedelta), intent(in) :: td1

Return Value logical

public pure elemental function timedelta_gt(td0, td1) result(res)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: td0
class(timedelta), intent(in) :: td1

Return Value logical

public pure elemental function timedelta_ge(td0, td1) result(res)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: td0
class(timedelta), intent(in) :: td1

Return Value logical

public pure elemental function timedelta_lt(td0, td1) result(res)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: td0
class(timedelta), intent(in) :: td1

Return Value logical

public pure elemental function timedelta_le(td0, td1) result(res)

Arguments

Type IntentOptional Attributes Name
class(timedelta), intent(in) :: td0
class(timedelta), intent(in) :: td1

Return Value logical


Subroutines

public pure elemental subroutine reset(self)

Arguments

Type IntentOptional Attributes Name
class(clock), intent(inout) :: self

public pure elemental subroutine tick(self)

Arguments

Type IntentOptional Attributes Name
class(clock), intent(inout) :: self

public subroutine setcalendar(calendarString)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: calendarString

public pure elemental subroutine addMilliseconds(self, ms)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(inout) :: self
integer, intent(in) :: ms

public pure elemental subroutine addSeconds(self, s)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(inout) :: self
integer, intent(in) :: s

public pure elemental subroutine addMinutes(self, m)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(inout) :: self
integer, intent(in) :: m

public pure elemental subroutine addHours(self, h)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(inout) :: self
integer, intent(in) :: h

public pure elemental subroutine addDays(self, d)

Arguments

Type IntentOptional Attributes Name
class(datetime), intent(inout) :: self
integer, intent(in) :: d