Packages
launchdarkly_server_sdk
2.1.2
3.11.0
3.10.1
3.9.0
3.8.1
3.8.0
3.7.2
3.7.1
3.7.0
3.6.0
3.5.0
3.4.0
3.3.1
3.3.0
3.2.0
3.1.0
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.1.2
2.1.1
2.1.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.6.0
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.3
1.1.2
1.1.1
retired
1.1.0
retired
1.0.1
retired
1.0.0
retired
1.0.0-beta4
retired
1.0.0-beta3
retired
1.0.0-beta2
retired
LaunchDarkly SDK for Erlang
Current section
Files
Jump to
Current section
Files
src/ldclient_time.erl
%%-------------------------------------------------------------------
%% @doc Local module for erlang module time methods.
%% This allows them to be easily mocked for testing.
%% @private
%% @end
%%-------------------------------------------------------------------
-module(ldclient_time).
%% API
-export([
time_seconds/0,
start_timer/3,
datetime_to_timestamp/1
]).
%% The difference between the start of the Gregorian calendar and 1/1/1970 (Unix Epoch).
-define(GREGORIAN_UNIX_OFFSET_SECONDS, 62167219200).
-spec time_seconds() -> integer().
time_seconds() ->
erlang:monotonic_time(second).
-spec start_timer(Time :: non_neg_integer(), Dest :: pid() | atom(), Msg :: term()) -> Timer :: reference().
start_timer(Time, Dest, Msg) ->
erlang:start_timer(Time, Dest, Msg).
%% There isn't a built-in method to convert from a calendar:datetime() to a unix timestamp.
%% This is useful to allow comparison between a parsed date and erlang:system_time.
-spec datetime_to_timestamp(DateTime :: calendar:datetime()) -> UtcMilliseconds :: integer().
datetime_to_timestamp(DateTime) ->
(calendar:datetime_to_gregorian_seconds(DateTime) - ?GREGORIAN_UNIX_OFFSET_SECONDS) * 1000.