Lua time [os.time()] [os.date()]

Lua time [os.time()] [os.date()]


核心方法


os.time()

os.time([table]): 按给定的参数(table格式)的内容返回一个时间值(数字)

  • 不传参的话返回当前时间转化成秒数的结果。(从格林尼治时间1970.01.01 00:00:00开始计时)
    print(os.time())
    ==========
    result:
    1561033140
    
  • 其中参数table中可以包含的字段有:year, month, day, hour, min, sec, isdst(夏令时),其他字段将会被忽略。可以使用该方法可以指定时间。
    • print(os.time({year =2019, month = 06, day = 20, hour = 20, min = 19, sec = 00}))
      ==========
      result:
      1561033140
      
    • print(os.time({year =1919, month = 06, day = 20, hour = 20, min = 19, sec = 00}))
      ==========
      result:
      nil
      
    • 注意:如果填了参数,year, month, day 则为必填参数,少填任意一个都会报错

os.date()

  • os.date ([format [, time]]). 返回format格式化日期、时间的字串或表。

  • 如果format!开头,则格式化使用的时间为格林尼治时间。

  • 如果format不是*t,os.date会将日期格式化为一个字符串。

  • 如果format是*t,将返一个带year(4位)(%Y),month(1-12), day (1–31), hour (0-23), min (0-59),sec (0-61),wday (星期几, 星期天为1), yday (年内天数)和isdst (是否为日光节约时间true/false)的带键名的表。

  • 举例:

    • print(os.date("%Y%m%d%H%M%S", os.time()))
      print(os.date("!%Y%m%d%H%M%S", os.time()))
      ==========
      result: 
      20191015170052
      20191015090052
      
    • print(os.date("%Y-%m-%d-%H-%M-%S", os.time()))
      ==========
      result: 
      2019-10-15-17-00-52
      
    • print(os.date("%Y-%m-%d %H:%M:%S", os.time()))
      ==========
      result: 
      2019-10-15 17:00:52
      
    • local data = os.date('*t', os.time())
      
      for k, v in pairs(data) do
      	print(k, v)
      end
      ==========
      result:
      wday		3
      yday		288
      sec			6
      min			53
      day			15
      month		10
      isdst		false
      year		2019
      hour		16
      
  • os.date()格式符:

    式符 含义 示例 [] 表示范围
    %a 一星期中天数的简写 (Fri)
    %A 一星期中天数的全称 (Wednesday)
    %b 月份的简写 (Sep)
    %B 月份的全称 (May)
    %c 日期和时间 (09/16/98 23:48:10)
    %d 一个月中的第几天 (28)[0 - 31]
    %H 24小时制中的小时数 (18)[00 - 23]
    %I 12小时制中的小时数 (10)[01 - 12]
    %j 一年中的第几天 (209)[01 - 366]
    %M 分钟数 (48)[00 - 59]
    %m 月份数 (09)[01 - 12]
    %P 上午或下午 (pm)[am - pm]
    %S 一分钟之内秒数 (10)[00 - 59]
    %w 一星期中的第几天 (3)[0 - 6 = 星期天 - 星期六]
    %W 一年中的第几个星期 (2)0 - 52
    %x 日期 (09/16/98)
    %X 时间 (23:48:10)
    %y 两位数的年份 (16)[00 - 99]
    %Y 完整的年份 (2016)
    %% 字符串’%’ (%)

拓展用法

  • 计算时区
    • print(os.difftime(os.time(), os.time(os.date('!*t', os.time()))) / 3600)
      =======
      result:
      8.0
      
  • 获取指定月份总共有多少天
    • function GetTotalDaysByYearAndMonth(_year, _month)
          local _date = {}
          _date.year = _year
          _date.month = _month + 1
          _date.day = 0
          local _days= os.date("%d",os.time(_date))			--下个月的第0天即当月的最后一天
          return _days
      end
      
      print(GetTotalDaysByYearAndMonth(2000, 2))
      

你可能感兴趣的:(Lua)