(原创)lua日期、时间、时间戳的计算和转换

----------------------------------------------日期与时间
print("当前时间戳:")
local nowTime = os.time()
print(nowTime)

print("")
print("转换成日期:")
--时间戳 转 日期
local nowData = os.date("%Y%m%d%H%M%S",nowTime)
print(nowData)

--可以单独转换
local tb = {}
tb.year = tonumber(os.date("%Y",unixTime))
tb.month =tonumber(os.date("%m",unixTime))
tb.day = tonumber(os.date("%d",unixTime))
tb.hour = tonumber(os.date("%H",unixTime))
tb.minute = tonumber(os.date("%M",unixTime))
tb.second = tonumber(os.date("%S",unixTime))

--转成table
local tb = os.date("*t",nowTime)
dump(tb)

print("")
print("日期转回时间戳:")
print(os.time(tb))

print("")

local time1 = os.time({year=2018,month=2,day=28,hour=23, min=0, sec=3})
local time2 = os.time({year=2018,month=3,day=1,hour=1, min=0, sec=2})

print("获取时间戳对应的日期")
--获取时间戳对应的天数(天数规则不是自然天,是(hour)4点前当前一天算)
function Tool:GetDayKeyByUnixTime(unixTime,hour)
    if hour == nil then hour = 0 end
    local retStr = os.date("%Y-%m-%d %H:%M:%S",unixTime)
    local time = unixTime
    local data = os.date("*t",time)
    --dump(data)

    --(hour)4点前按前一天算
    if data.hour < hour then
        time = time - 24*60*60
    end

    local data2 = os.date("*t",time)
    --dump(data2)
    data2.hour = 0
    data2.min = 0
    data2.sec = 0

    local time2 = os.time(data2)

    local dayKey = os.date("Key%Y%m%d",time2)
    local timeBase = time2

    --天数key,日期格式字符串,天数key 0点的时间戳
    return dayKey,retStr,timeBase
end

local dayKey,str = Tool:GetDayKeyByUnixTime(time1,4)
print("dayKey = "..dayKey.."  str = "..str)
dayKey,str = Tool:GetDayKeyByUnixTime(time2,4)
print("dayKey = "..dayKey.."  str = "..str)

--两个时间的天数差              --时间戳1  时间戳2  多少点开始算第二天
function Tool:NumberOfDaysInterval(unixTime1,unixTime2,dayFlagHour)
    if dayFlagHour == nil then dayFlagHour = 0 end
    local key1,str1,time1 = Tool:GetDayKeyByUnixTime(unixTime1,dayFlagHour)
    local key2,str2,time2 = Tool:GetDayKeyByUnixTime(unixTime2,dayFlagHour)

    local sub = math.abs(time2 - time1)/(24*60*60)
    print(str1.." 与 "..str2.."相差的天数:"..sub)

    return sub
end

local sub = Tool:NumberOfDaysInterval(time1,time2,4)
print(sub)

原文地址:https://www.cnblogs.com/mingfuqishi/p/10145064.html

时间: 2024-11-03 16:33:07

(原创)lua日期、时间、时间戳的计算和转换的相关文章

c/c++日期时间处理与字符串string转换

在c/c++实际问题的编程中,我们经常会用到日期与时间的格式,在算法运行中,通常将时间转化为int来进行计算,而处理输入输出的时候,日期时间的格式却是五花八门,以各种标点空格相连或者不加标点. 首先,在c中,是有一个标准的日期时间结构体的,在标准库wchar.h内,我们可以看到结构体tm的声明如下: 1 #ifndef _TM_DEFINED 2 struct tm { 3 int tm_sec; /* seconds after the minute - [0,59] */ 4 int tm_

ORACLE函数之日期时间运算函数

1            ADD_MONTHS 格式:ADD_MONTHS(D,N) 说明:返回日期时间D加N月后对应的日期时间.N为正时则表示D之后:N为负时则表示为D之前:N为小数则会自动先删除小数部分,而用整数部分 举例: SQL>SELECT ADD_MONTHS(SYSDATE,7) A,ADD_MONTHS(SYSDATE,-7) B,ADD_MONTHS(SYSDATE,7.9)C FROM DUAL; A                             B        

MySQL 日期时间相关函数

第一部分:时间差函数  timestampdiff.datediff.timediff 一.时间差函数:timestampdiff 语法:timestampdiff(interval, datetime1,datetime2) 结果:返回(时间2-时间1)的时间差,结果单位由interval参数给出. frac_second 毫秒(低版本不支持,用second,再除于1000) second 秒 minute 分钟 hour 小时 day 天 week 周 month 月 quarter 季度

计算日期时间 自动加1天 PHP计算闰年 java与PHP时间戳对比区别

昨天写一个同步数据库的模块  从一个数据库同步到另外一个数据库,因为数据较多,不可能一次性全部搬迁过去,所以就按照每天搬迁! 写了一个 模块,点击加1,只要点击一次,自动从A数据库取出1天的数据, 并插入到B数据库, 在代码中你可能看到 计算时间的时候用到了 时间戳,并且时间戳加了好多 ‘0’ 是因为那是sqlserver 是公司java同事写的,为了PHP计算的时间戳与之匹配, 所以通过加‘0’之后  对比 时间戳取出一天的数据! 这里顺便整理一下 java和PHP之间的时间戳的区别! jav

Python时间,日期,时间戳之间转换

#1.将字符串的时间转换为时间戳方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S") # 转换为时间戳: timeStamp = int(time.mktime(timeArray)) timeStamp == 1381419600 # 字符串格式更改如a = "2013-10-10 23:40:00&qu

Unix时间戳转日期时间格式,C#、Java、Python各语言实现!

之前有个Q上好友没事问我,怎么自己写Unix时间戳转日期时间?于是我就顺手写了个C#版本给他!最近想起来,就萌发多写几个语言的版本分享,权当练习思路外加熟悉另外两种语言. 先说转换步骤 先处理年份,从1970年开始处理,根据平年闰年的总秒数,先得到年,剩余的秒数再求月份: 根据剩余秒数求得月份,因为2月的缘故,同样需要处理平年闰年': 得天数,直接除以每天的总秒数,然后取得天: 取小时.分钟.秒: Python版本: # -*- coding: UTF-8 -*- from datetime i

mysql 将时间戳直接转换成日期时间

date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值格式化 例如: mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' ) ->20071120 mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' ) ->2007年11月20 UNIX_TIMESTAMP()是与之相对正好相反的时间函数 UNIX

PHP获取当前时间、时间戳的各种格式写法汇总[日期时间]

原文:PHP获取当前时间.时间戳的各种格式写法汇总[日期时间] 今天写下php中,如何通过各种方法 获取当前系统时间.时间戳,并备注各种格式的含义,可灵活变通. 1.获取当前时间方法date() 很简单,这就是获取时间的方法,格式为:date($format, $timestamp),format为格式.timestamp为时间戳--可填参数. 2.获取时间戳方法time().strtotime() 这两个方法,都可以获取php中unix时间戳,time()为直接获取得到,strtotime($

Shell日期时间和时间戳的转换

Gitlab的备份文件是以时间戳显示的,类似:1438624820_gitlab_backup.tar 为了更易于阅读,想把文件名转换成日期格式:2015-08-04_gitlab_backup.tar 所以查找了下Shell里时间转换的方法,记录如下备忘. Linux下时间转换的一些命令: date +%s   可以得到UNIX的时间戳; 用shell将日期时间与时间戳互转:       date -d "2015-08-04 00:00:00" +%s     输出:1438617