os.time与os.date

os.time()

按table的内容返回一个时间值(数字),若不带参数则使用当前时间(本时区此刻时间)作为table内容,其中table中可以包含的字段有:year, month, day, hour, min, sec, isdst,其他字段将会被忽略。hour, min, sec这几个值的范围不一定是正常的时间,甚至可以是负数,比如时间08:62:-10就代表了09:01:50。

os.time()不加参数表示当前时间的时间戳,这个函数在任意时区下获取到结果一致,因为都表示格林尼治时间1970.01.01-00:00:00到现在这个点格林尼治时间经过的秒数。不管你的时区是什么,这个值是一个绝对的值。

os.time(table)得到格林尼治时间为1970.01.01-00:00:00时本时区的时间(北京为8点)到本时区table时刻,经过的秒数。和时区有关

os.data()

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

由原型可以看出可以省略第二个参数也可以省略两个参数,只省略第二个参数函数会使用当前时间(当前本地时间戳)作为第二个参数,如果两个参数都省略则按当前系统的设置返回格式化的字符串,做以下等价替换 os.date() <=> os.date("%c")。

没有"!":格林尼治时间0点时候的本地时间,加上第二个参数的秒数,得到的新的本地时间;如:os.date("*t", os.time())表示本地现在时间table。

有"!":格林尼治时间0点,加上第二个参数的秒数的时间。如:os.date("!*t", os.time())表示此时格林尼治时间。

获取客户端当前时区:os.difftime(now, os.time(os.date("!*t", os.time())))/3600

你可能感兴趣的:(os.time与os.date)