• 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()
      验证是否合法日期
















     

  • 相关阅读:
    线性表算法设计题2.11
    硬币抛掷模拟(使用数组)
    循环列示例(约瑟夫环问题)
    线性表算法设计题2.15
    ASP.NET2.0中的GRIDVIEW控件在使用TemplateField中的LinkButton时如何在RowCommand事件中找到当前行index的方法
    VS2005发布网站问题及"aspnet_merge.exe”已退出,代码为 1的错误
    弹出对话框的同时保持页面的显示(不变形)
    NET Framework 类库
    一些实用的正则表达式
    CuteEditor6.0使用配置心得体会
  • 原文地址:https://www.cnblogs.com/rubyist/p/erlang_stdlib_calendar.html
Copyright © 2020-2023  润新知