renamed the API methods, updated the README
This commit is contained in:
83
src/ezic.erl
83
src/ezic.erl
@@ -1,7 +1,8 @@
|
||||
-module(ezic).
|
||||
-include("include/ezic.hrl").
|
||||
|
||||
-export([localtime/1, time2time/3]).
|
||||
-export([localtime/1, utc_to_local/2, utc_from_local/2, zone_convert/3]).
|
||||
|
||||
-export([load/1, dev_start/0, test/0]).
|
||||
|
||||
|
||||
@@ -10,36 +11,37 @@
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% API
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
localtime(TzName) ->
|
||||
time(erlang:universaltime(), TzName).
|
||||
utc_to_local(erlang:universaltime(), TzName).
|
||||
|
||||
|
||||
time(Datetime, TzName) ->
|
||||
utc_to_local(Datetime, TzName) ->
|
||||
{ok, Zone, Rule}= current(Datetime, TzName),
|
||||
SecDiff= offset(Zone, Rule),
|
||||
date_add(Datetime, SecDiff).
|
||||
|
||||
|
||||
Zones= ezic_db:zones(TzName),
|
||||
% ?debug("All Zones: ~p", [Zones]),
|
||||
CZone= ezic_zone:current(Datetime, Zones),
|
||||
% ?debug("Current Zone: ~p", [CZone]),
|
||||
|
||||
RuleName= CZone#zone.rule,
|
||||
Rules= ezic_db:rules(RuleName),
|
||||
% ?debug("All Rules: ~p", [Rules]),
|
||||
CRule= ezic_rule:current(Datetime, Rules),
|
||||
% ?debug("Current Rule: ~p", [CRule]),
|
||||
|
||||
OffsetSec= ezic_zone:offset_sec(CZone),
|
||||
DSTSec= ezic_rule:dst_sec(CRule),
|
||||
|
||||
SecDiff= OffsetSec + DSTSec,
|
||||
?gs2dt(?dt2gs(Datetime) + SecDiff).
|
||||
utc_from_local(Datetime, TzName) ->
|
||||
{ok, Zone, Rule}= current(Datetime, TzName),
|
||||
SecDiff= offset(Zone, Rule),
|
||||
date_subtract(Datetime, SecDiff).
|
||||
|
||||
|
||||
|
||||
time2time(_DateTime, _FromTimeZone, _ToTimeZone) ->
|
||||
void.
|
||||
zone_convert(Datetime, FromTimeZone, ToTimeZone) ->
|
||||
UTC= utc_from_local(Datetime, FromTimeZone),
|
||||
utc_to_local(UTC, ToTimeZone).
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% DEV API
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
@@ -57,3 +59,40 @@ test() ->
|
||||
io:format("~s: ~p~n", [TZ, localtime(TZ)])
|
||||
end,
|
||||
["Asia/Tokyo", "America/New_York", "America/Los_Angeles", "America/Jamaica", "Australia/Adelaide"]).
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% PRIVATE
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
current(Datetime, TzName) ->
|
||||
Zones= ezic_db:zones(TzName),
|
||||
% ?debug("All Zones: ~p", [Zones]),
|
||||
CZone= ezic_zone:current(Datetime, Zones),
|
||||
% ?debug("Current Zone: ~p", [CZone]),
|
||||
|
||||
RuleName= CZone#zone.rule,
|
||||
Rules= ezic_db:rules(RuleName),
|
||||
% ?debug("All Rules: ~p", [Rules]),
|
||||
CRule= ezic_rule:current(Datetime, Rules),
|
||||
% ?debug("Current Rule: ~p", [CRule]),
|
||||
{ok, CZone, CRule}.
|
||||
|
||||
|
||||
|
||||
|
||||
offset(Zone, Rule) ->
|
||||
OffsetSec= ezic_zone:offset_sec(Zone),
|
||||
DSTSec= ezic_rule:dst_sec(Rule),
|
||||
OffsetSec + DSTSec.
|
||||
|
||||
|
||||
|
||||
date_add(Datetime, SecDiff) ->
|
||||
?gs2dt(?dt2gs(Datetime) + SecDiff).
|
||||
|
||||
date_subtract(Datetime, SecDiff) ->
|
||||
?gs2dt(?dt2gs(Datetime) - SecDiff).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user