鱼C论坛

 找回密码
 立即注册
查看: 4849|回复: 4

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

[复制链接]
发表于 2012-2-26 02:38:38 | 显示全部楼层 |阅读模式
1鱼币
最好能加点注释。

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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;
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[256];
        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);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[12]={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[y]+h)
        {
                y++;
        }
        jy=y;
        // 判断是几天
        if(nt>31)
        {
        nt=(nt-(a[y-1]+h));
        }
     printf("%d年%d月%d日\n",jn,jy,nt);
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-8 11:20:16 | 显示全部楼层
谢谢分享,非常喜欢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表