C语言时间戳占几个字节,浅谈时间戳与日期时间互转C语言

浅谈时间戳与日期时间互转C语言

/*

* ctime.h

*

* Created on: May 19, 2016

*

*/

#ifndef CTIME_H_

#define CTIME_H_

#include "common/micro_type.h"

#define OFFSET_SECOND 946684800 /* ��1970/1/1/0/0/0��2000/1/1/0/0/0֮��������� */

//#define OFFSET_SECOND 0 /* ��2000/1/1/0/0/0��2000/1/1/0/0/0֮��������� */

#define SECOND_OF_DAY 86400 /* 1������� */

typedef struct date_time

{

uint16 iYear;

uint16 iMon;

uint16 iDay;

uint16 iHour;

uint16 iMin;

uint16 iSec;

uint16 iMsec;

} DATE_TIME;

void GetDateTimeFromSecond(unsigned long lSec, DATE_TIME *tTime);

#endif /* CTIME_H_ */

/*

* ctime.c

*

* Created on: May 19, 2016

* Author: root

*/

#include "common/micro_type.h"

#include "ctime.h"

uint8 DayOfMon[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

/* ������1970/1/1/0/0/0�����ʱ */

unsigned long GetSecondTime(DATE_TIME *date_time)

{

uint16 iYear, iMon, iDay, iHour, iMin, iSec;

iYear = date_time->iYear;

iMon = date_time->iMon;

iDay = date_time->iDay;

iHour = date_time->iHour;

iMin = date_time->iMin;

iSec = date_time->iSec;

uint16 i, Cyear=0;

unsigned long CountDay=0;

for(i=1970; i

{

if(((i%4==0) && (i%100!=0)) || (i%400==0)) Cyear++;

}

CountDay = Cyear * 366 + (iYear-1970-Cyear) * 365;

for(i=1; i

{

if((i==2) && (((iYear%4==0)&&(iYear%100!=0)) || (iYear%400==0)))

CountDay += 29;

else

CountDay += DayOfMon[i-1];

}

CountDay += (iDay-1);

CountDay = CountDay*SECOND_OF_DAY + (unsigned long)iHour*3600 + (unsigned long)iMin*60 + iSec;

return CountDay;

}

/* ����ʱ�������1970/1/1/0/0������ */

void GetDateTimeFromSecond(unsigned long lSec, DATE_TIME *tTime)

{

uint16 i,j,iDay;

unsigned long lDay;

lDay = lSec / SECOND_OF_DAY; /* תΪ�������ʱ�� */

lSec = lSec % SECOND_OF_DAY;

i = 1970;

while(lDay > 365)

{

if(((i%4==0)&&(i%100!=0)) || (i%400==0)) /* ���� */

lDay -= 366;

else

lDay -= 365;

i++;

}

if((lDay == 365) && !(((i%4==0)&&(i%100!=0)) || (i%400==0))) /* ƽ�� */

{

lDay -= 365;

i++;

}

tTime->iYear = i; /* �õ���� */

for(j=0;j<12;j++) /* �����·� */

{

if((j==1) && (((i%4==0)&&(i%100!=0)) || (i%400==0)))

iDay = 29;

else

iDay = DayOfMon[j];

if(lDay >= iDay) lDay -= iDay;

else break;

}

tTime->iMon = j+1;

tTime->iDay = lDay+1;

tTime->iHour = ((lSec / 3600)+8)%24;//这里注意,世界时间已经加上北京时间差8,

tTime->iMin = (lSec % 3600) / 60;

tTime->iSec = (lSec % 3600) % 60;

}

以上这篇浅谈时间戳与日期时间互转C语言就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值