| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3705 人关注过本帖, 1 人收藏
标题:用时间函数判断输入的一个日期与现在的日期相比是否在一周之内,若是当天, ...
只看楼主 加入收藏
圈圈ing
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2015-1-4
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:18 
用时间函数判断输入的一个日期与现在的日期相比是否在一周之内,若是当天,时间是否在一个小时之外。。
这是我系统中的两个判断,可是一点思路都没有,还望指教一二!
2015-01-08 05:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:4 
time_t a = ……
time_t b = ……

if( b-a <= 3600*24*7 )
    时差在一周以内

if( b/(3600*24) == a/(3600*24) ) // 在同一天
    if( b-a > 3600 )
         时差在一个小时之外
2015-01-08 08:31
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:4 
现在的时间应该是a=time(0)

一片落叶掉进了回忆的流年。
2015-01-08 09:13
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:4 
#include <time.h>
你要处理输入的时间格式,比如你规定输入时间的格式为:年-月-日 时:分:秒,然后你要提取里面的年月日等数字并最后合并为一个long型数据参与比较即可。c处理字符串还是啰嗦些。

能编个毛线衣吗?
2015-01-08 10:58
圈圈ing
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2015-1-4
收藏
得分:0 
回复 2楼 rjsp
输入要用什么格式呢?就是a或者b
2015-01-08 13:28
圈圈ing
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2015-1-4
收藏
得分:0 
回复 4楼 wmf2014
是不是要转换为秒数?
2015-01-08 13:31
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:4 
程序代码:
#include <stdio.h>
#include <time.h>

const int wsec = 604800;
const int dsec = 86400;
const int hsec = 3600;

int main(void) {
    struct tm input, *lzerow, *lzerod, *lzeroh;
    time_t iTime, zTimeW, zTimeD, zTimeH, lTime = time(NULL);
    int year, mon, day, hour, min, sec;

    printf("输入年月日时分秒 以空格分隔 如 2015 1 8 20 50 30\n");
    scanf("%d %d %d %d %d %d", &year, &mon, &day, &hour, &min, &sec);

    input.tm_year = year - 1900;
    input.tm_mon = mon - 1;
    input.tm_mday = day;
    input.tm_hour = hour;
    input.tm_min = min;
    input.tm_sec = sec;
    iTime = mktime(&input);

    printf("LocalTime = %lld\n", lTime);
    lzerow = lzerod = lzeroh = localtime(&lTime);
    lzerow->tm_min = lzerod->tm_min = lzeroh->tm_min = 0;
    lzerow->tm_sec = lzerod->tm_sec = lzeroh->tm_sec = 0;
    zTimeH = mktime(lzeroh);
    printf("ZeroTimeHour = %lld\n", zTimeH);

    lzerod->tm_hour = 0;
    zTimeD = mktime(lzerod);
    printf("ZeroTimeDay = %lld\n", zTimeD);

    lzerow->tm_yday -= lzerow->tm_wday - 1;
    lzerow->tm_mday -= lzerow->tm_wday - 1;
    lzerow->tm_wday = 1;
    lzerow->tm_hour = 0;
    zTimeW = mktime(lzerow);
    printf("ZeroTimeWeek = %lld\n", zTimeW);

    if(iTime >= zTimeH && iTime <= zTimeH + hsec) {
        printf("在同一小时内\n");
        return 0;

    } else {
        printf("不在同一小时内\n");
    }

    if(iTime >= zTimeD && iTime <= zTimeD + dsec) {
        printf("在同一天内\n");
        return 0;

    } else {
        printf("不在同一天内\n");
    }

    if(iTime >= zTimeW && iTime <= zTimeW + wsec) {
        printf("在同一周内\n");

    } else {
        printf("不在同一周内\n");
    }

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-01-08 22:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
说的是日期,却出现时间,不懂这是什么问题。

授人以渔,不授人以鱼。
2015-01-08 22:36
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 8楼 TonyDeng
我对楼主问题的理解
就写在代码的if...else段里了

不知道是不是楼主的意图?

Only the Code Tells the Truth             K.I.S.S
2015-01-08 22:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
日期只是年月日,没有时间的。日期时间类型才包含时间。

授人以渔,不授人以鱼。
2015-01-08 22:43
快速回复:用时间函数判断输入的一个日期与现在的日期相比是否在一周之内,若是当 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013182 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved