美文网首页
6.时间戳与时间

6.时间戳与时间

作者: wit_yuan | 来源:发表于2020-01-04 10:10 被阅读0次

1.简介

时间戳简单来说就是时间替换成的秒数。

2.应用

2.1 时间转换为时间戳

给出代码即可,不做过多介绍。

.h文件内容:

#ifndef _mktime_h_
#define _mktime_h_


struct tm {
    int tm_sec;         /* seconds */
    int tm_min;         /* minutes */
    int tm_hour;        /* hours */
    int tm_mday;        /* day of the month */
    int tm_mon;         /* month */
    int tm_year;        /* year */
    int tm_wday;        /* day of the week */
    int tm_yday;        /* day in the year */              
    int tm_isdst;       /* daylight saving time */
};

#endif

.c文件内容:

#include "mktime.h"

#define MINUTE 60
#define HOUR (60*MINUTE)
#define DAY (24*HOUR)
#define YEAR (365*DAY)



/* interestingly, we assume leap-years */
static int month[12] = {                //--每月初所经过的秒数
    0,
    DAY*(31),
    DAY*(31+29),
    DAY*(31+29+31),
    DAY*(31+29+31+30),
    DAY*(31+29+31+30+31),
    DAY*(31+29+31+30+31+30),
    DAY*(31+29+31+30+31+30+31),
    DAY*(31+29+31+30+31+30+31+31),
    DAY*(31+29+31+30+31+30+31+31+30),
    DAY*(31+29+31+30+31+30+31+31+30+31),
    DAY*(31+29+31+30+31+30+31+31+30+31+30)
};


long kernel_mktime(struct tm * tm)
{
    long res;
    int year;
    year = tm->tm_year - 70;                            //--年数
        /* magic offsets (y+1) needed to get leapyears right.*/
    res = YEAR*year + DAY*((year+1)/4);                    //--年数+闰年数
    res += month[tm->tm_mon];                            //--月
        /* and (y+2) here. If it wasn't a leap-year, we have to adjust */
    if (tm->tm_mon>1 && ((year+2)%4))                    //--若(y+2)不是闰年,则减一天
        res -= DAY;
    res += DAY*(tm->tm_mday-1);                            //--当月已经过的天数
    res += HOUR*tm->tm_hour;                            //--当天已经过的小时数
    res += MINUTE*tm->tm_min;                            //--此时已经过的分钟
    res += tm->tm_sec;                                    //--此分已经过的秒
    return res;
}

注意时间戳不是按照当地的时间来算的,而是有一个基准:格林威治时间,它属于UTC 0 (GMT),而我们是属于东八区,所以一般根据我们的时间算出来的时间戳需要减去8个小时的偏差才是真正的格林威治时间转换过来的时间戳。

因此,如果是数据上传到云平台,只需要上传unix时间戳即可,后面的时区只需要云平台去关注就好。

3.多说一句

如果用的是keil,工具本身是包含mktime()的。

相关文章

  • 6.时间戳与时间

    1.简介 时间戳简单来说就是时间替换成的秒数。 2.应用 2.1 时间转换为时间戳 给出代码即可,不做过多介绍。 ...

  • 时间与时间戳

    //.h //时间转date + (NSDate *)dataWithTime:(NSString *)time;...

  • 时间与时间戳

    //获取当前时间 }//2.获取当前时间戳 //3.把时间戳转化为时间 }

  • 【Python】时间与时间戳

    import time 时间戳的获取方式 一、获取10位时间戳的方法,单位:秒 二、获取13位时间戳的方法,单位:...

  • 时间戳与时间格式

    一.js将时间转换成时间戳 1.js获取当前时间戳的方法 第一种:获取的时间戳是把毫秒改成000显示,第二种和第三...

  • 时间戳与时间互转

    1 时间转时间戳 2 时间戳转时间

  • Swift 时间与时间戳

    标准格式时间字符串转时间戳: let dfmatter = DateFormatter() dfm...

  • Swift时间与时间戳之间的转化

    1.时间转时间戳 2. 时间戳转时间 本文转自: Swift - 获取当前时间的时间戳(时间戳与时间互相转换)

  • 时间戳与时间差

    ajax异步接口获取到时间戳当前时间与该时间戳比较求已经过去了多长时间??

  • 人类时间格式与时间戳

    人类时间格式 使用moment.js获取,如下所示: const CurrentDate = moment(); ...

网友评论

      本文标题:6.时间戳与时间

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