C语言:Unix时间戳-转-UTC时间 C语言:UTC时间-转-Unix时间戳
一、简介
1. Unix时间戳
Unix系统内记录的时间是一个时间戳,所谓时间戳,就是当前时间距离1970年1月1日0时0分0秒经过的总秒数。
2. UTC时间
协调世界时,又称世界统一时间、世界标准时间、国际协调时间。 由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。 北京在东八区,所以:北京时间=UTC+8h。
二、UTC时间-转-Unix时间戳——C语言实现
#include <stdio.h>
unsigned int Utctime_Unix(int year,int mon,int day,int hour,int min,int sec)
{
unsigned int Unix_sec=0,i=0;
int tyear=year;
while(tyear >1970)
{
tyear--;
if((tyear%400==0)||((tyear%4==0)&&(tyear%100!=0))) {day+=366;}
else {day+=365;}
}
for(i=1;i<13;i++)
{
if(mon == i) break;
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day+=31;
break;
case 4:
case 6:
case 9:
case 11:day+=30;
break;
case 2:if((year%400==0)||((year%4==0)&&(year%100!=0))) { day+=29;}
else { day+=28;}
break;
}
}
Unix_sec+= (day-1)*24*60*60;
Unix_sec+= hour*60*60;
Unix_sec+= min*60;
Unix_sec+= sec;
return Unix_sec;
}
int main(int argc, char *argv[])
{
printf("%d\n",Utctime_Unix(1996,5,22,11,13,14));
return 0;
}
程序运行结果如下:
Unix时间戳:832763594
|