calendar

模块说明

  • 本模块提供了本地时间、世界时间、星期几的计算和几个时间转换函数
  • local time 考虑了时区和夏令时,Universal time是取0经度的时间,且没有夏令时。反正是搞不明白了!!!
  • UTC(Universal Coordinated Time) 也叫GMT(Greenwich Mean Time),中文世界时间、格林威治时间、国际标准时间
  • local_time/0 和 universal_time/0 同时返回日期和时间,这是为了防止2次调用间跨天了。
    单独返回的date/0和time/0 强烈建议不用

  • 日期遵循公历
  • 日期时间差值计算应采用公历天数和秒数计数的函数,本地时间先转换为世界时间。
  • time_difference/2 不要用
  • 本模块当年第几周的定义遵从ISO8601标准。没读过该标准
  • stdlib文档标记了datetime1970(), 但函数使用了1970年前的日期似乎也可正确。搞不清楚了
  • erlang 从公元0年开始计算
  • erlang:now()  返回的是自1970年1月1日0时0分0秒的秒数元组{MegaSecs,Secs,MicroSecs}
  • 日期和时间来源于erlang:localtime/0  和 erlang:universaltime/0 

导出函数

  • date_to_gregorian_days(Date) -> Days
    date_to_gregorian_days(Year, Month, Day) -> Days
    返回日期的公历天数
  • datetime_to_gregorian_seconds(DateTime) -> Seconds
    返回日期时间的公历秒数
  • day_of_the_week(Date) -> daynum()
    day_of_the_week(Year, Month, Day) -> daynum()
    返回日期是星期几。1-Monday 2-Tuesday 等等
  • gregorian_days_to_date(Days) -> date()
    公历天数转日期
  • gregorian_seconds_to_datetime(Seconds) -> datetime()
    公历秒数转日期时间
  • is_leap_year(Year) -> boolean()
    是否闰年
  • iso_week_number() -> yearweeknum()    返回 local_time/0 对应日期的第几周
    iso_week_number(Date) -> yearweeknum()  返回Date 对应的第几周
  • last_day_of_the_month(Year, Month) -> LastDay
    某年某月多少天
  • local_time() -> datetime()
    操作系统告知的本地时间
  • local_time_to_universal_time(DateTime1) -> DateTime2
    本地时间转世界时,申明废弃;建议使用如下版本
  • local_time_to_universal_time_dst(DateTime1) -> [DateTime]
    同上,考虑了夏令时。返回[] 对应那些不存在的日期时间,比如夏令时从5时直接进入6时,那么中间的本地时间就没有对应了。

         返回 [DstDateTimeUTC,DateTimeUTC] 从夏令时改回来时,从6时改为5时,本地时间又走了一遍5时到6时,其中DstDateTimeUTC是夏令时起作用中;

         DateTimeUTC是改回来后。这样理解对吧?

         返回[DateTimeUTC] 对应那些一般日期时间

  • now_to_local_time(Now) -> datetime1970()
    erlang:now/0 的秒数元组转本地时间
  • now_to_universal_time(Now) ->datetime1970()
    now_to_datetime(Now) ->datetime1970()
    erlang:now/0的秒数元组转世界时
  • seconds_to_daystime(Seconds) -> {Days, Time}
    秒数转{天数,时间}
  • seconds_to_time(Seconds) -> time()
    限制一天内的秒数[0,86400)转时间
  • time_difference(T1, T2) -> {Days, Time}
    废弃
  • time_to_seconds(Time) -> secs_per_day()
    时间转秒数
  • universal_time() -> datetime()
    世界时
  • universal_time_to_local_time(DateTime) -> datetime()
    时间时转本地时间
  • valid_date(Date) -> boolean()
    valid_date(Year, Month, Day) -> boolean()
    验证是否合法日期
















 

原文地址:https://www.cnblogs.com/rubyist/p/erlang_stdlib_calendar.html