Erlang中文手册(Erldoc.com)  »  calendar  »  local_time_to_universal_time_dst/1
Erlang并发编程 Erlang/OTP设计原理 Erlang/OTP[pdf] Mnesia用户手册[pdf] Erlang完整手册[en] 官网手册[en] 模块列表 方法列表 随机 Erlang中文社区(BBS) 美女图库

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}}).
阿里云 - 最高1000元通用代金券立即可用
沪ICP备13037221号-9