关闭

lua中关于时间的总结

133人阅读 评论(0) 收藏 举报
分类:

在项目的开发过程中,难免会对时间进行处理,下面对关于时间的知识进行总结一下:
1.lua中自带的os库
os.time ([table]) 函数按table的内容返回一个时间值(数字),若不带参数则返回当前时间table的字段

print(os.time());   --得到当前的时间
-->1249887340
print(os.time({year=1970, month=1, day=1, hour=0}));
-->10500

os.date ([format [, time]])
功能:返回一个按format格式化日期、时间的字串或表
若设置time参数,则按time指定的时间格式化,否则按当前时间格式化

参数format::
“!”:按格林尼治时间进行格式化。
  “*t”:将返一个带year(4位),month(1-12), day (1–31), hour (0-23), min (0-59), sec (0-61), wday (星期几, 星期天为1), yday (年内天数), and isdst (是否为日光节约时间true/false)的带键名的表; 若没有”*t”则返回一个按C的strftime函数格式化的字符串
若不带参数,则按当前系统的设置返回格式化的字符串 os.date() <=> os.date(“%c”)

t = os.date("*t", os.time()); --得到的是当前的时间,第二个参数默认也是当前的时间
for i, v in pairs(t) do
      print(i, v);
end
--最后得到年月日等数据,

对于其它的格式字符串,os.date会将日期格式化为一个字符串

print(os.date("today is %A, in %B"))      -->today is Tuesday, in May
print(os.date("%x", 906000490))           -->09/16/1998

所有格式化字符串:
%a 一星期中天数的简写 (Wed)
%A 一星期中天数的全称 (Wednesday)
%b 月份的简写 (Sep)
%B 月份的全称 (September)
%c 日期和时间 (09/16/98 23:48:10)
%d 一个月中的第几天 (16)[0 ~ 31]
%H 24小时制中的小时数 (23)[00 ~ 23]
%I 12小时制中的小时数 (11)[01 ~ 12]
%j 一年中的第几天 (259)[01 ~ 366]
%M 分钟数 (48)[00 ~ 59]
%m 月份数 (09)[01 ~ 12]
%P “上午(am)” 或 “下午(pm)” (pm)
%S 秒数 (10)[00 ~ 59]
%w 一星期中的第几天 (3)[0 ~ 6 = 星期天 ~ 星期六]
%W  一年中的第几个星期        0 ~ 52
%x 日期 (09/16/98)
%X 时间 (23:48:10)
%y 两位数的年份 (90)[00 ~ 99]
%Y 完整的年份 (2009)
%% 字符串’%’

根据计算机时间得到当前时间

function gettimeDateStr(time)  --time是一个具体存在的时间
    local t = os.date("*t", time )
    return string.format("%.4d年%.2d月%.2d日", t.year, t.month, t.day) --返回年月日
    return string.format("%.2d月%.2d日%.2d:%.2d", t.month, t.day, t.hour, t.min)  --返回月日时等
end

倒计时函数(根据计算机时间看出还剩多少时间)

function getLeftTime(leftTime)   --倒计时的计算机时间
    local leftStr = ""
    if leftTime > 0 then  
        if leftTime < 60 then
            leftStr = leftTime .. "秒"
        else
            if leftTime % 60 > 0 then
                leftStr = (leftTime % 60) .. "秒"
            end
            leftTime = math.floor(leftTime / 60)
            if leftTime < 60 then
                leftStr = leftTime .. "分" .. leftStr
            else
                if leftTime % 60 > 0 then
                    leftStr = (leftTime % 60) .. "分"
                end
                leftTime = math.floor(leftTime / 60)
                if leftTime < 24 then
                    leftStr = leftTime .. "小时" .. leftStr
                else
                    if leftTime % 24 > 0 then
                        leftStr = (leftTime % 24) .. "小时"
                    end
                    leftStr = math.floor(leftTime / 24) .. "天" .. leftStr
                end
            end
        end
    end
    return leftStr
end
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9061次
    • 积分:528
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条