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]
    %H24小时制中的小时数(18)[00 - 23]
    %I12小时制中的小时数(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))
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值