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:
aj
2010-11-14 00:27:44 -08:00
parent d664384c60
commit 22395e2f47
4 changed files with 76 additions and 16 deletions

View File

@@ -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(