⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unixtime.c

📁 普通时间换算为unix时间换算。标准时间换算
💻 C
字号:
#include "stdio.h"
#include "conio.h"
#include "math.h"

#define uchar unsigned char;
#define uint unsigned int;

void unixtime_to_localtime(long int unixtimetemp);
long int localtime_to_unixtime();

typedef struct CLK
{
  unsigned int    Year;
  unsigned char Month;
  unsigned char Day;
  unsigned char Hour;
  unsigned char Minute;
  unsigned char Second;
  unsigned char Week;
} CLOCK;
CLOCK system_clk_temp,clock;


main()
{   long int unixtimetemp1;
    clock.Year = 2007;
    clock.Month = 9;
    clock.Day = 2;
    clock.Hour = 5;
    clock.Minute = 0;
    clock.Second = 0;
    clock.Week = 0;
    system_clk_temp = clock;
    /*unixtime_to_localtime(0x4b1cd0f4);
    printf("%d\n",system_clk_temp.Year);
    printf("%d\n",system_clk_temp.Month);
    printf("%d\n",system_clk_temp.Day);
    printf("%d\n",system_clk_temp.Hour);
    printf("%d\n",system_clk_temp.Minute);
    printf("%d\n",system_clk_temp.Second);*/
    unixtimetemp1 = localtime_to_unixtime();
    printf("%lx\n",unixtimetemp1);
    unixtime_to_localtime(0x48bce802);
    printf("%d\n",system_clk_temp.Year);
    printf("%d\n",system_clk_temp.Month);
    printf("%d\n",system_clk_temp.Day);
    printf("%d\n",system_clk_temp.Hour);
    printf("%d\n",system_clk_temp.Minute);
    printf("%d\n",system_clk_temp.Second);
    getch();
}
void unixtime_to_localtime(long int unixtimetemp)
{
    unsigned int  month[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};      /*注意溢出*/
    unsigned char  i;
    unsigned int x,extraday=0;
    unsigned int  unixtimeyear,unixtimemonth,unixtimeday;
     unixtimetemp = unixtimetemp + 28800;    /*加上北京时间*/
     unixtimeyear = unixtimetemp/31536000;
     system_clk_temp.Year = 1970+unixtimeyear;
     for(x=1970;x<system_clk_temp.Year;x++)               /*加上闰年二月多的一天*/
     {
        if(((x % 4) == 0 && ((x % 100) != 0 || (x % 400) == 0)))
        {
            extraday++;
        }
     }
    if((((system_clk_temp.Year) % 4) == 0 && (((system_clk_temp.Year) % 100) != 0 || ((system_clk_temp.Year) % 400) == 0)))
    {
       for(i=2;i<12;i++)
       {
               month[i] = month[i] + 1;
       }
    }

    unixtimeday = unixtimetemp%31536000/86400 - extraday;
    printf("%d\n",unixtimeday);
    for(i=0;i<12;i++)
    {
        if((unixtimeday>=month[i])&&(unixtimeday<month[i+1]))
        {
            system_clk_temp.Month = i+1;
            printf("%d\n",system_clk_temp.Month);
            system_clk_temp.Day   = unixtimeday - month[i]+1;
        }
    }

    system_clk_temp.Hour = unixtimetemp%86400/3600;
    system_clk_temp.Minute = unixtimetemp%3600/60;
    system_clk_temp.Second = unixtimetemp%60;
}

long int localtime_to_unixtime()
{
    unsigned int month[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};
    long int  unixtimetemp,unixtimeday,unixtimehour;
    unsigned char i;
    unsigned int x,extraday=0;
    unsigned int   unixtimeyear;
    unsigned char  unixtimemonth;

     for(x=1970;x<system_clk_temp.Year;x++)               /*加上闰年二月多的一天*/
     {
        if(((x % 4) == 0 && ((x % 100) != 0 || (x % 400) == 0)))
        {
            extraday++;
        }
     }

    unixtimeyear = system_clk_temp.Year - 1970;
     printf("%d\n",unixtimeyear);
    if((((system_clk_temp.Year) % 4) == 0 && (((system_clk_temp.Year) % 100) != 0 || ((system_clk_temp.Year) % 400) == 0)))
    {
       for(i=2;i<12;i++)
       {
               month[i] = month[i] + 1;
       }
    }
    unixtimemonth = system_clk_temp.Month;
    unixtimehour  = system_clk_temp.Hour;
    printf("%d\n",month[unixtimemonth-1]);
    unixtimeday = unixtimeyear*365 + month[unixtimemonth-1] + system_clk_temp.Day-1 + extraday;
    printf("%d\n",unixtimeday);
    /*修改system_clk_temp.Hour-8可能导致变成负数的问题,原来为“(system_clk_temp.Hour-8)*3600”*/
    /*ZG20080126 修改system_clk_temp.Hour*3600可能导致数据溢出的问题,现在改为(unixtimehour)*3600*/
    unixtimetemp = unixtimeday*86400 + (unixtimehour)*3600-28800+system_clk_temp.Minute*60 + system_clk_temp.Second;
    printf("%c\n%ld\n",'@',unixtimetemp);
    return(unixtimetemp);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -