判断一个时间,是昨天,是今天,还是明天,还是后天,有什么好办法?

xingguyuwang 2013-03-27 04:52:56
CTime currentTime;
CTime goalTime;


我要判断goalTime相对于currentTime是是昨天,是今天,还是明天,还是后天,有什么好办法啊?
...全文
760 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingguyuwang 2013-03-28
  • 打赏
  • 举报
回复
这个方法最好了。
引用 16 楼 bravery36 的回复:
将时分秒都清零,然后再相减就行了。这样得出的结果肯定是days,不要自己做那些没有意义的判断。
bravery36 2013-03-28
  • 打赏
  • 举报
回复
将时分秒都清零,然后再相减就行了。这样得出的结果肯定是days,不要自己做那些没有意义的判断。
xingguyuwang 2013-03-28
  • 打赏
  • 举报
回复
说是容易的,写下去就麻烦了。
引用 14 楼 kenall 的回复:
[quote=引用 2 楼 starytx 的回复:] CTimeSpan ts = goalTime - currentTime if(ts.GetDays() == 1) // 明天 ... else if(ts.GetDays() == -1) // 昨天
再加上一个0点判断基本上就可以了[/quote]
Kenall 2013-03-28
  • 打赏
  • 举报
回复
引用 2 楼 starytx 的回复:
CTimeSpan ts = goalTime - currentTime if(ts.GetDays() == 1) // 明天 ... else if(ts.GetDays() == -1) // 昨天
再加上一个0点判断基本上就可以了
xingguyuwang 2013-03-28
  • 打赏
  • 举报
回复
很麻烦。。
引用 10 楼 a357664853 的回复:
判断年相减,是正负就知道是未来还是过去,如果是0就接下来判定月份相减,同理如果是0,比较日子,再来就是小时,分钟,秒
xingguyuwang 2013-03-28
  • 打赏
  • 举报
回复
两个时间相差1秒钟,也有可能是今天和明天的差距,甚至是今年和明年的差距。。
引用 7 楼 starytx 的回复:
[quote=引用 5 楼 xingguyuwang 的回复:] 这个方法是严重错误的,我之前就用这个方法。 [quote=引用 2 楼 starytx 的回复:] CTimeSpan ts = goalTime - currentTime if(ts.GetDays() == 1) // 明天 ... else if(ts.GetDays() == -1) // 昨天
[/quote]严重错误?估计是你没用对,看看这个例子
    CTime t1(2012, 1, 19, 23, 45, 10); // 10:15 PM March 19, 1999
    CTime t2(2013, 3, 20, 22, 15, 0); // 10:15 PM March 20, 1999
    CTimeSpan ts = t2 - t1;             // Subtract 2 CTimes

    cout << "时间相差 "<<ts.GetDays() <<"天 " << ts.GetHours() << "时 " << ts.GetMinutes() << "分 "<< ts.GetSeconds()<<"秒 " << endl;
[/quote]
xingguyuwang 2013-03-28
  • 打赏
  • 举报
回复
如果是第365天和明天的第1天呢? 还有,有些年是365天,有些是366天?还要判断那一年是不是闰年。 这样算的话,还是很麻烦。。
引用 9 楼 adlay 的回复:
使用 CTime 的 Format 方法, 用 "%j" 格式, 可以得到这个时间是一年中的第几天. 有了这个数据就好判断了把?
Roth- 2013-03-27
  • 打赏
  • 举报
回复
判断年相减,是正负就知道是未来还是过去,如果是0就接下来判定月份相减,同理如果是0,比较日子,再来就是小时,分钟,秒
www_adintr_com 2013-03-27
  • 打赏
  • 举报
回复
使用 CTime 的 Format 方法, 用 "%j" 格式, 可以得到这个时间是一年中的第几天. 有了这个数据就好判断了把?
寒冰雪 2013-03-27
  • 打赏
  • 举报
回复
试下boost的date_time库。。
starytx 2013-03-27
  • 打赏
  • 举报
回复
引用 5 楼 xingguyuwang 的回复:
这个方法是严重错误的,我之前就用这个方法。 [quote=引用 2 楼 starytx 的回复:] CTimeSpan ts = goalTime - currentTime if(ts.GetDays() == 1) // 明天 ... else if(ts.GetDays() == -1) // 昨天
[/quote]严重错误?估计是你没用对,看看这个例子
    CTime t1(2012, 1, 19, 23, 45, 10); // 10:15 PM March 19, 1999
    CTime t2(2013, 3, 20, 22, 15, 0); // 10:15 PM March 20, 1999
    CTimeSpan ts = t2 - t1;             // Subtract 2 CTimes

    cout << "时间相差 "<<ts.GetDays() <<"天 " << ts.GetHours() << "时 " << ts.GetMinutes() << "分 "<< ts.GetSeconds()<<"秒 " << endl;
xingguyuwang 2013-03-27
  • 打赏
  • 举报
回复
而且,你所说的确定时间范围是最难的,还要考虑每个月的最后一天,可能是28号,可能是29号,可能是30号,可能是31号等等。。。 突然发现很复杂。
引用 1 楼 xianzongtanxun 的回复:
首先获取当前的时间····因为今天,明天,后天的时间都在一个范围,把要判断的时间和当前时间求差,看结果是否在特定时间范围
xingguyuwang 2013-03-27
  • 打赏
  • 举报
回复
这个方法是严重错误的,我之前就用这个方法。
引用 2 楼 starytx 的回复:
CTimeSpan ts = goalTime - currentTime if(ts.GetDays() == 1) // 明天 ... else if(ts.GetDays() == -1) // 昨天
xingguyuwang 2013-03-27
  • 打赏
  • 举报
回复
给个代码吧。。
引用 1 楼 xianzongtanxun 的回复:
首先获取当前的时间····因为今天,明天,后天的时间都在一个范围,把要判断的时间和当前时间求差,看结果是否在特定时间范围
derekrose 2013-03-27
  • 打赏
  • 举报
回复
Ctime重载了-操作符,你可以试试
starytx 2013-03-27
  • 打赏
  • 举报
回复
CTimeSpan ts = goalTime - currentTime if(ts.GetDays() == 1) // 明天 ... else if(ts.GetDays() == -1) // 昨天
仙踪探寻 2013-03-27
  • 打赏
  • 举报
回复
首先获取当前的时间····因为今天,明天,后天的时间都在一个范围,把要判断的时间和当前时间求差,看结果是否在特定时间范围

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧