• openresty开发系列20--lua的时间操作


    openresty开发系列20--lua的时间操作

    在 Lua 中,函数 time、date 和 difftime 提供了所有的日期和时间功能。
    在 OpenResty 的世界里,不推荐使用这里的标准时间函数,
    因为这些函数通常会引发不止一个昂贵的系统调用,同时无法为 LuaJIT JIT 编译,对性能造成较大影响。
    推荐使用 ngx_lua 模块提供的带缓存的时间接口,
    如 ngx.today, ngx.time, ngx.utctime, ngx.localtime, ngx.now, ngx.http_time,以及 ngx.cookie_time 等。

    一)os.time ([table])
    它会返回当前的时间和日期的时间戳(精确到秒),如赋值table,表示此table指定日期的时间戳

    字段名称         取值范围
    year             四位数字
    month             1--12
    day             1--31
    hour             0--23
    min             0--59
    sec             0--59
    isdst             boolean(true表示夏令时)

    对于 time 函数,如果参数为 table,那么 table 中必须含有 year、month、day 字段。
    其他字缺省时段默认为中午(12:00:00)。
    print(os.time())    
    a = { year = 2018, month = 1, day = 30, hour = 0, min = 0, sec = 0 }
    print(os.time(a))   

    时间戳的是以计算机最小时间和指定时间之间相差的秒数,计算机最小时间为1970-1-1 00:00:00(美国时区),
    针对中国时区就是1970-1-1 08:00:00
    a = { year = 1970, month = 1, day = 1, hour = 8, min = 0, sec = 1 }
    print(os.time(a))
    输出的就是1秒

    二)os.difftime (t2, t1)
    返回 t1 到 t2 的时间差,单位为秒。

    local day1 = { year = 2018, month = 1, day = 30 }
    local t1 = os.time(day1)
    local day2 = { year = 2018, month = 1, day = 31 }
    local t2 = os.time(day2)
    print(os.difftime(t2, t1))

    --->output:86400

    三)os.date ([format [, time]])
    把一个表示日期和时间的数值,转换成更高级的表现形式。
    格式字符             含义
    %a                     一星期中天数的简写(例如:Wed)
    %A                     一星期中天数的全称(例如:Wednesday)
    %b                     月份的简写(例如:Sep)
    %B                     月份的全称(例如:September)
    %c                     日期和时间(例如:07/30/15 16:57:24)
    %d                     一个月中的第几天[01 ~ 31]
    %H                     24小时制中的小时数[00 ~ 23]
    %I                     12小时制中的小时数[01 ~ 12]
    %j                     一年中的第几天[001 ~ 366]
    %M                     分钟数[00 ~ 59]
    %m                     月份数[01 ~ 12]
    %p                     "上午(am)"或"下午(pm)"
    %S                     秒数[00 ~ 59]
    %w                     一星期中的第几天[0 ~ 6 = 星期天 ~ 星期六]
    %x                     日期(例如:07/30/15)
    %X                     时间(例如:16:57:24)
    %y                     两位数的年份[00 ~ 99]
    %Y                     完整的年份(例如:2015)
    %%                     字符'%'

    print(os.date("today is %A, in %B"))
    print(os.date("now is %x %X"))
    print(os.date("%Y-%m-%d %H:%M:%S"))

    -->output
    today is Thursday, in July
    now is 07/30/15 17:39:22
    2018-03-29 22:36:05

    ---------------------------

    t = os.date("*t", os.time());
    for i, v in pairs(t) do
          print(i, v);
    end

    yday    120  --一年中的第几天,一月一日为1
    month   4
    sec     9
    min     9
    hour    16
    day     30
    year    2018
    isdst   false  --是否夏令时
    wday    2   --一周第几天  星期日为1

  • 相关阅读:
    jQuery-选择器及属性修改
    jQuery 基础理论
    CSS 之 BFC(块级格式化上下文)
    H5--Web Storage
    H5 -WebWorker
    H5 --拖放
    nodejs Multer中间件
    k8s pod
    kubernetes
    优化CUDA数据传输
  • 原文地址:https://www.cnblogs.com/reblue520/p/11433795.html
Copyright © 2020-2023  润新知