C语言时间戳转换

时间戳:

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。使用时间戳仅用四个四节保存日期时间,可用于日志、版本号中时间的保存和传输


引用的库:

#include <time.h>
库内时间接头体定义:struct tm
时间转时间戳库函数:mktime
时间戳转时间函数:localtime


实现代码:

头文件 date_time.h

/* Includes ------------------------------------------------------*/
#include <stdint.h>

/* Private define ------------------------------------------------*/
/* Private typedef -----------------------------------------------*/
typedef struct
{
    uint16_t Year;
    uint16_t Mon;
    uint16_t Day;
    uint16_t Hour;
    uint16_t Min;
    uint16_t Sec;
}ST_DATE_TIME,*PST_DATE_TIME;

/* Private constants ---------------------------------------------*/
/* Private variables ---------------------------------------------*/
/* Private function prototypes -----------------------------------*/
/* Public constants ----------------------------------------------*/
/* Public variables ----------------------------------------------*/
uint32_t DateTime2Stamp(PST_DATE_TIME pstDateTime);
ST_DATE_TIME TimeStamp2DateTime(uint32_t Stamp);

源文件:date_time.c

/* Includes ------------------------------------------------------*/
#include "date_time.h"
#include <time.h>

/* Private define ------------------------------------------------*/
/* Private typedef -----------------------------------------------*/
/* Private constants ---------------------------------------------*/
/* Private variables ---------------------------------------------*/
/* Private function prototypes -----------------------------------*/
/* Public constants ----------------------------------------------*/
/* Public variables ----------------------------------------------*/

/********************************************************************
* name          : DateTime2Stamp
* description   : 根据实际获取时间戳
* Input         : pstDateTime
* Output        : nonoe
* Return        : Stamp
********************************************************************/
uint32_t DateTime2Stamp(PST_DATE_TIME pstDateTime)
{
    struct tm stTime;
    time_t TimeStamp;

    stTime.tm_year = pstDateTime->Year - 1900;
    stTime.tm_mon = pstDateTime->Mon - 1;
    stTime.tm_mday = pstDateTime->Day;
    stTime.tm_hour = pstDateTime->Hour;
    stTime.tm_min = pstDateTime->Min;
    stTime.tm_sec = pstDateTime->Sec;
    TimeStamp = mktime(&stTime);
    return (uint32_t)TimeStamp;
}

/********************************************************************
* name          : TimeStamp2DateTime
* description   : 根据时间戳获取时间
* Input         : Stamp
* Output        : none
* Return        : DateTime
********************************************************************/
ST_DATE_TIME TimeStamp2DateTime(uint32_t Stamp)
{
    ST_DATE_TIME stDateTime;

    time_t TimeStamp = Stamp;
    struct tm* pstTime = localtime(&TimeStamp);
    stDateTime.Year = pstTime->tm_year + 1900;
    stDateTime.Mon = pstTime->tm_mon + 1;
    stDateTime.Day = pstTime->tm_mday;
    stDateTime.Hour = pstTime->tm_hour;
    stDateTime.Min = pstTime->tm_min;
    stDateTime.Sec = pstTime->tm_sec;
    return stDateTime;
}
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值