11/13位时间戳转化为标准时间

来源:互联网 发布:杂志排版用什么软件 编辑:程序博客网 时间:2024/05/16 07:46
// TimeConvert.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <time.h>#include <string.h>int IsLeap(unsigned short year){return ((year%4==0)&&(year%100!=0)||(year%400==0));}void MillSecond2LocalTime(long long time,long timezone){const int monthLengths[2][13]={{0,31,59,90,120,151,181,212,243,273,304,334,365},{0,31,60,91,121,152,182,213,244,274,305,335,366}};const int yearLengths[2]={365,366};int year(0),month(0),minMonth(0),maxMonth(0),days(0),clock(0),isLeap(0),day(0),hour(0),minute(0),second(0);time/=1000;time+=timezone*60*60;days=time/86400;//天数clock=time%86400;//小时数if(clock<0){clock+=86400;days-=1;}if(days>=0){year=days/366;days-=year*365+(year+1)/4-(year+69)/100+(year+369)/400;for (year=year+1970;;year++){isLeap=IsLeap(year);if(days<yearLengths[isLeap]){break;}days-=yearLengths[isLeap];}}else{year=days/366;days-=year*365+(year-2)/4-(year-30)/100+(year-30)/400;for(year=year+1970-1;;year--){isLeap=false;days+=yearLengths[isLeap];if (days>=0){break;}}}minMonth=0;maxMonth=12;for (month=5;month<12&&month>0;month=(minMonth+maxMonth)/2){if (days<monthLengths[isLeap][month]){maxMonth=month;}else if (days>=monthLengths[isLeap][month+1]){minMonth=month;}else{break;}}days-=monthLengths[isLeap][month];month++;day=days+1;hour=clock/3600;clock=clock%3600;minute=clock/60;second=clock%60;printf("%d-%02d-%02d %02d:%02d:%02d",year,month,day,hour,minute,second);}int main(int argc, char* argv[]){char *str="402395506223";long long time;sscanf(str,"%I64d",&time);MillSecond2LocalTime(time,8);}

 

方法2 :使用结构体 tm

 

   void main()  {             struct tm *newtime;        char tmpbuf[128];        time_t lt;        lt=time( NULL );        newtime=localtime(<);        printf("%d 月 %d 日 %d 点 %d 分 %d 秒\n",newtime->tm_mon+1, newtime->tm_mday,newtime->tm_hour,newtime->tm_min,newtime->tm_sec);  }  


 

 

 

 

0 0
原创粉丝点击