美文网首页
air800模块中获取时间戳

air800模块中获取时间戳

作者: vvaa01 | 来源:发表于2018-10-24 14:43 被阅读0次

背景

小组内计划采用air800的定位功能制作一款带定位功能的自行车码表,能够实时将定位信息传递到服务器进行保存并由手机端拉取数据进行查看。
服务端采用的百度鹰眼服务,上传数据时需要同时上传位置点的时间戳,在air800模块的示例代码及库文件中并没有直接读取时间戳的函数,所以自己写了一遍,随手一写,也许有错误。今天的时间戳是正确的,明年的就不知道了,总之,思路是有了的。

实现

air800的misc.lua库文件中提供了getclock函数,能够返回table类型的数据,包含了年月日时分秒这么几个字段,时间戳可以使用这几个字段进行计算反推。

--[[
函数名:getclock
功能  :获取系统时间表
参数  :无
返回值:table类型的时间,例如{year=2017,month=2,day=14,hour=14,min=19,sec=23}
]]
function getclock()
    return os.date("*t")
end

通过getclock函数返回的时间信息,首先计算出距离1970年1月1日过去多少天,之后根据天数计算出秒数,再加上今天过去的秒数即可。代码如下:

--[[
函数名:gettimestamp
功能  :根据时间表计算出时间戳
参数  :系统时间table
返回值:无
]]
function gettimestamp( time_table )
    -- 定义每个月的天数,注意:闰年2月份有29天
    local mon_days={31,28,31,30,31,30,31,31,30,31,30,31}
    -- 从1970年1月1日至今过去多少天的计算
    -- 由于闰年是4年一次,所以将年数除以4取商得到共有多少闰年周期
    -- 每个闰年周期是1461天,以此计算过去闰年周期中的天数
    local days=(time_table["year"]- 1970)/4 * 1461

    -- 剩余年数,除掉闰年周期以外剩下的年份
    local last_years=(time_table["year"]-1970)%4
    -- 如果剩余1年或两年,则直接将年数*365天即可
    if last_years == 1 or last_years == 2 then
        days = days + 365 * last_years
    -- 如果剩余3年,则这3年中必有一年时闰年,所以需要+1天
    elseif last_years == 3 then
        days = days + 365 *3 +1
    -- 剩余0年,刚好除尽,如2018年,则不需要加天数
    else
        print("nc")
    end

    -- 计算本年度已过去的天数,按月天数累计即可
    -- 注意lua编程语言中下标从1开始,不是从0开始
    for i=1,(time_table["month"]-1) do
        days = days + mon_days[i]
    end
    -- 如果今年时闰年而且当前月份大于2,则天数+1
    if time_table["year"]%4==0 and time_table["month"] > 2 then
        days = days + 1
    end
    -- 加上本月已过的天数
    days = days + time_table["day"]-1
    -- 将天数转化为秒数输出
    local timestamp = days*24*60*60 
        + time_table["hour"]*60*60 
        + time_table["min"] * 60 
        + time_table["sec"] 
        - 8*60*60
    print(timestamp)
    print("------------------------------")
end

相关文章

  • air800模块中获取时间戳

    背景 小组内计划采用air800的定位功能制作一款带定位功能的自行车码表,能够实时将定位信息传递到服务器进行保存并...

  • python之time模块1

    time 模块 time 模块主要用于一些 日期 和 时间 的处理 获取当前时间戳 time.time() 时间戳...

  • day21-time模块

    一、时间模块 时间格式:时间戳,struct_time。 1.获取当前时间(时间戳) 时间戳:一个时间到1970年...

  • Python 时间和日期模块

    time模块方法: time.time():获取当前时间的时间戳 时间戳转换为北京时间:http://tool.c...

  • 日期时间

    0. time 模块 概念:提供 处理 时间 和 表示 之间转换 的功能 操作获取当前时间戳# 时间戳:从 0 ...

  • Python 时间相关函数速查

    引入模块 当前时间 获取当前时间的datetime对象 1 查看当前时间 2 获取当前时间的时间戳(1970年到现...

  • iOS 时间日期的处理

    注:以下方法都是写在NSDate的分类中 一 获取当前时间的时间戳 获取当前时间戳(以秒为单位) 获取当前时间戳(...

  • Python time模块和datetime模块

    time模块 主要包含处理年月日时分秒对应的时间 1.获取当前时间 获取到的为时间戳。 时间戳:从格林威治时间(从...

  • Python基础08-时间日历

    1. time 模块 提供 处理时间 和 展示时间 之间转换的功能 1.1 获取当前时间戳 时间戳:从0逝去的19...

  • python 入门(九) 日期和时间

    获取当前时间戳 引入 time 模块 使用time() 方法 每个时间戳都以自从1970年1月1日午夜(历元)经过...

网友评论

      本文标题:air800模块中获取时间戳

      本文链接:https://www.haomeiwen.com/subject/qbzttqtx.html