calendar:local_time_to_universal_time_dst/1
把本地时间转换为世界标准时
用法:
local_time_to_universal_time_dst(DateTime1) -> [DateTime]
内部实现:
-spec local_time_to_universal_time_dst(DateTime1) -> [DateTime] when DateTime1 :: datetime1970(), DateTime :: datetime1970(). local_time_to_universal_time_dst(DateTime) -> UtDst = erlang:localtime_to_universaltime(DateTime, true), Ut = erlang:localtime_to_universaltime(DateTime, false), %% Reverse check the universal times LtDst = erlang:universaltime_to_localtime(UtDst), Lt = erlang:universaltime_to_localtime(Ut), %% Return the valid universal times case {LtDst,Lt} of {DateTime,DateTime} when UtDst =/= Ut -> [UtDst,Ut]; {DateTime,_} -> [UtDst]; {_,DateTime} -> [Ut]; {_,_} -> [] end.
这个函数把本地时间 DateTime1 转为一个世界标准时间(UTC,Universal Coordinated Time )。DateTime1 必须是一个1970年1月1日之后的本地时间。
返回值有以下几种结果:
- []:当切换到夏令时的期间里,本地时间 {Date1, Time1} 会被跳过,因为没有对应的 UTC 时间,本地时间是一个非法的时间(它不会发生)
- [DstDateTimeUTC, DateTimeUTC]:当从夏令时切换的期间里,本地时间 {Date1, Time1} 会重复出现,英文有 2 个对应的 UTC 时间,一个是第一个夏令时仍处于活动状态的时候,另外一个是第一个夏令时仍处于活动状态的时候。
- [DateTimeUTC]:所有的本地时间只有一个对应的 UTC 时间。
calendar:local_time_to_universal_time_dst({{2014, 7, 17}, {17, 38, 12}}).