免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11486 | 回复: 7
打印 上一主题 下一主题

[算法] 求一个整型的秒数变成年月日时分秒格式的算法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-23 12:56 |只看该作者 |倒序浏览
需要对时间进行处理,将一个整型的秒数转换成年月日时分秒格式,大家有现成的程序就给贴一个,谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-04-23 13:13 |只看该作者

求一个整型的秒数变成年月日时分秒格式的算法

自己不会做么?

论坛徽章:
0
3 [报告]
发表于 2004-04-23 13:42 |只看该作者

求一个整型的秒数变成年月日时分秒格式的算法

0秒是?年?月?日?时?分?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-04-23 14:31 |只看该作者

求一个整型的秒数变成年月日时分秒格式的算法

man localtime

论坛徽章:
0
5 [报告]
发表于 2004-04-23 14:38 |只看该作者

求一个整型的秒数变成年月日时分秒格式的算法

楼主好像是要自己写一个转换算法?

论坛徽章:
0
6 [报告]
发表于 2004-04-23 14:39 |只看该作者

求一个整型的秒数变成年月日时分秒格式的算法

0秒是1970-01-01 00:00:00
#include <stdio.h>;
#include <time.h>;

main()
{
        struct tm l_tm;
        time_t l_time = 0;
        gmtime_r(&l_time, &l_tm);
        printf("%04d-%02d-%02d %02d:%02d:%02d",
                l_tm.tm_year+1900,l_tm.tm_mon+1,l_tm.tm_mday,
                l_tm.tm_hour,l_tm.tm_min,l_tm.tm_sec);
}

论坛徽章:
0
7 [报告]
发表于 2013-03-05 08:59 |只看该作者
看这个:
/*
* Convert seconds since 01-01-1970 00:00:00 to Gregorian date.
*/
void rtc_time_to_tm(unsigned long time, struct rtc_time *tm)
{
        unsigned int month, year;
        int days;

        days = time / 86400;
        time -= (unsigned int) days * 86400;

        /* day of the week, 1970-01-01 was a Thursday */
        tm->tm_wday = (days + 4) % 7;

        year = 1970 + days / 365;
        days -= (year - 1970) * 365
                + LEAPS_THRU_END_OF(year - 1)
                - LEAPS_THRU_END_OF(1970 - 1);
        if (days < 0) {
                year -= 1;
                days += 365 + is_leap_year(year);
        }
        tm->tm_year = year - 1900;
        tm->tm_yday = days + 1;

        for (month = 0; month < 11; month++) {
                int newdays;

                newdays = days - rtc_month_days(month, year);
                if (newdays < 0)
                        break;
                days = newdays;
        }
        tm->tm_mon = month;
        tm->tm_mday = days + 1;

        tm->tm_hour = time / 3600;
        time -= tm->tm_hour * 3600;
        tm->tm_min = time / 60;
        tm->tm_sec = time - tm->tm_min * 60;

        tm->tm_isdst = 0;
}

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
8 [报告]
发表于 2013-03-05 11:35 |只看该作者
回复 7# anman_zhou

这个程序是错的…………还记得前一阵子闰秒的事么?

切记,年月日是“历法单位”,时分秒是“时间单位”,两者之间没有简单的换算关系,只能用一堆映射规则做类似查表的算法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP