程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 時間戳與日期時間互轉C語言,日期c語言

時間戳與日期時間互轉C語言,日期c語言

編輯:關於C語言

時間戳與日期時間互轉C語言,日期c語言


/*  * ctime.h  *  *  Created on: May 19, 2016  *      Author: root  */   #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<iYear; i++)     /* ͳ��1970�굽����֮ǰ�������� */     {         if(((i%4==0) && (i%100!=0)) || (i%400==0))  Cyear++;     }     CountDay = Cyear * 366 + (iYear-1970-Cyear) * 365;     for(i=1; i<iMon; 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; }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved