max_year base case bug fixed. ezic:localtime/1 works.
the final flatzone for every Zone should end at "current" for every *_to time. This is inaccurate, but accuracy is only guaranteed up to ?MAX_YEAR (=2500 by default). that working, I fleshed out the few methods required to get ezic:utc_to_localtime/2 working, thus localtime/1 working. I've only tested localtime/1 at this point. additionally, mnesia appears to have its data corrupted every time I stop and start a node. I've got to read up on working with mnesia; it's not behaving as I would expect.
This commit is contained in:
29
src/ezic.erl
29
src/ezic.erl
@@ -8,7 +8,13 @@
|
||||
, next_timechange_after/2
|
||||
]).
|
||||
|
||||
-export([load/1, dev/0, test/0]).
|
||||
-export([
|
||||
load/1
|
||||
, dev/0
|
||||
, test/0
|
||||
, reflatten/0
|
||||
, zf/0
|
||||
]).
|
||||
|
||||
|
||||
|
||||
@@ -28,8 +34,14 @@ localtime(TzName) ->
|
||||
|
||||
|
||||
utc_to_local(UTCDatetime, TzName) ->
|
||||
#flatzone{offset=Offset, dstoffset=DSTOffset}= ezic_db:flatzone(UTCDatetime, TzName),
|
||||
ezic_date:add_offset(ezic_date:add_offset(UTCDatetime, Offset), DSTOffset).
|
||||
NormalDatetime= ezic_date:normalize(UTCDatetime, u),
|
||||
#flatzone{offset=Offset, dstoffset=DSTOffset}= ezic_db:flatzone(NormalDatetime, TzName),
|
||||
|
||||
ezic_date:add_offset(
|
||||
ezic_date:add_offset(
|
||||
UTCDatetime
|
||||
, Offset)
|
||||
, DSTOffset).
|
||||
|
||||
|
||||
|
||||
@@ -57,11 +69,22 @@ load(Folder) ->
|
||||
dev() ->
|
||||
ezic:load(filename:join("priv","tzdata")),
|
||||
ezic_flatten:flatten(),
|
||||
|
||||
% Zones= ezic_db:zones("WET"),
|
||||
% ezic_flatten:flatten_all_zones(Zones),
|
||||
|
||||
ok.
|
||||
|
||||
zf() ->
|
||||
Zones= ezic_db:zones("Asia/Tokyo"),
|
||||
ezic_flatten:flatten_all_zones(Zones).
|
||||
|
||||
|
||||
reflatten() ->
|
||||
ezic_db:wipe(flatzone),
|
||||
ezic_flatten:flatten().
|
||||
|
||||
|
||||
|
||||
test() ->
|
||||
lists:foreach(
|
||||
|
||||
Reference in New Issue
Block a user