时间戳:
时间戳是指格林威治时间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;
}