Mr.C 发表于 2012-2-26 02:38:38

求将(1900年至今的秒数)转换成(当前时间)的算法

最好能加点注释。

Push 发表于 2012-2-26 02:38:39

#include <stdio.h>

int time(int x);

int main(void)
{
        int y1, time;
       
        printf("Please enter year: ");
        scanf("%ld", &y1);
        time = time(y1);
        printf("1900-%d: = %d", y1, time);
}

int time(int x)
{
        int a = 1900;
        int b = 60;
        int Max;
        if(x%4 == 0 && x%100 == 0 && x%400 == 0)
        {
                Max = b * 60 * 24 * (365+1); //一分钟60秒,一小时60*60,一天*24,一年*356,而闰年+一天
        }
        else
        {
                Max = b * 60 * 24 * 365; //一分钟60秒,一小时60*60,一天*24,一年*356;
        }
        Max *= (x - a);                //估计会爆掉...
       
        return Max;
       
}

619494930 发表于 2012-2-26 20:26:54

#define HIGHTIME 21968699 // 21968708 // Jan 1, 1900 FILETIME.highTime
#define LOWTIME 4259332096 // 1604626432 // Jan 1, 1900 FILETIME.lowtime

        SYSTEMTIME st;
       
        UINT64 uiCurTime, uiBaseTime, uiResult;
        uiBaseTime = ((UINT64) HIGHTIME << 32) + LOWTIME;
        uiCurTime = (UINT64)ulTime * (UINT64)10000000;
        uiResult = uiBaseTime + uiCurTime;
        FileTimeToSystemTime((LPFILETIME)&uiResult, &st);

        char buffer;
        ZeroMemory(buffer,sizeof(buffer)/sizeof(char));
        wsprintf(buffer,TEXT("%i年%i月%i日 %i:%i:%i")\
                ,st.wYear,st.wMonth,st.wDay,st.wHour+8,st.wMinute,st.wSecond);

sc3297 发表于 2012-2-28 09:28:15

新手到处找练习题呢, 照题目写了一个 但是数输入大了就错了,麻烦看看这个算法对不对
#include <stdio.h>

void main()
{
        int n,nt,m=0,h=0,y=1,c=31;// n是秒数 nt是天数 m是年数 h是每个闰年+1天 y是月份 j是最后得出那年是否闰年
        int jn,jy=1;
        int         a={31,59,89,120,150,181,212,242,273,303,334,365};
        printf("输入查询的秒数\n");
        scanf("%d",&n);
        nt=n/86400;
        while (nt>365)
        {
                nt=nt-(365+h);
                m++;
                if ((1900+m)%4==0)
                {
                        if ((1900+m)%100==0)
                        {
                                if ((1900+m)%400==0)
                                {
                                        h=1;
                                }
                                else h=0;
                        }
                        h=1;
                }
               
        }
        jn=1900+m;                //求出是几年
        if ((1900+m)%4==0)         //判断这一年是否闰年
        {
                if ((1900+m)%100==0)
                {
                        if ((1900+m)%400==0)
                        {
                                h=1;
                        }
                        else h=0;
                }
                h=1;
        }
   //判断是这年的几月
        while (nt>a+h)
        {
                y++;
        }
        jy=y;
        // 判断是几天
        if(nt>31)
        {
        nt=(nt-(a+h));
        }
   printf("%d年%d月%d日\n",jn,jy,nt);
}

2004wmj 发表于 2014-9-8 11:20:16

谢谢分享,非常喜欢!
页: [1]
查看完整版本: 求将(1900年至今的秒数)转换成(当前时间)的算法