C语言计算日期差的方法示例

 更新时间:2017年06月16日 11:03:28   作者:YY''s  
这篇文章主要介绍了C语言计算日期差的方法,结合具体实例形式分析了C语言针对日期转换、运算等相关操作技巧,需要的朋友可以参考下

本文实例讲述了C语言计算日期差的方法。分享给大家供大家参考,具体如下:

历史上,不同的人类聚居地可能有不同的历法,因而记录下来的资料中日期的换算就很麻烦。幸好今天我们统一使用公元纪年法。当然,这种历法对求两个日期差多少天也不是十分简便,但毕竟是可以忍受的。

下面的程序计算了两个日期的差值,两个日期都使用公元纪年法。

#include <bits/stdc++.h>
using namespace std;
int to_day(int y, int m, int d)
{
  int mon[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
  int day = 0;
  int i;
  for(i=1; i<y; i++){
    day += (i%4==0 && i%100!=0 || i%400==0)? 366 : 365;
  }
  if(y%4==0 && y%100!=0 || y%400==0) mon[2]++;
  for(i=1; i<m; i++){
      day += mon[i];
  }
  return day + d;
}
int diff(int y1, int m1, int d1, int y2, int m2, int d2)
{
  int a = to_day(y1, m1, d1);
  int b = to_day(y2, m2, d2);
  return b-a;
}
int main(
{
  //int n = diff(1864,12,31,1865,1,1);
  int n = diff(1864,12,31,2012,3,18);
  printf("%d\n", n);
  return 0;
}
int n = diff(1864,12,31,2012,3,18);// 输出 53768

PS:这里再为大家推荐几款关于日期与天数计算的在线工具供大家使用:

在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi

在线万年历日历:
http://tools.jb51.net/bianmin/wannianli

在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli

希望本文所述对大家C语言程序设计有所帮助。

相关文章

  • C语言下快速排序(挖坑法)详解

    C语言下快速排序(挖坑法)详解

    大家好,本篇文章主要讲的是C语言下快速排序(挖坑法)详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C语言转义字符详解

    C语言转义字符详解

    这篇文章主要介绍了C语言转义字符详解,本篇文章通过简要的案例,讲解了C语言转义字符该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言中的二叉树和堆详解

    C语言中的二叉树和堆详解

    这篇文章主要介绍了C语言中的二叉树和堆详解,树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的,需要的朋友可以参考下
    2023-07-07
  • C++位图的实现原理与方法

    C++位图的实现原理与方法

    位图(bitset)是一种常用的数据结构,常用在给一个很大范围的数,判断其中的一个数是不是在其中。这篇文章主要给大家介绍了关于C++位图以及位图的实现原理与方法,需要的朋友可以参考下
    2021-05-05
  • 全面了解#pragma once与 #ifndef的区别

    全面了解#pragma once与 #ifndef的区别

    下面小编就为大家带来一篇全面了解#pragma once与 #ifndef的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • C++基本算法思想之穷举法

    C++基本算法思想之穷举法

    在使用穷举法时,需要明确问题的答案的范围,这样才可以在指定的范围内搜索答案。指定范围之后,就可以使用循环语句和条件语句逐步验证候选答案的正确性,从而得到需要的正确答案
    2013-10-10
  • C++ Boost Pool超详细讲解

    C++ Boost Pool超详细讲解

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • 深入理解c++20 concepts

    深入理解c++20 concepts

    本文主要介绍了深入理解c++20 concepts,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Ubuntu20.04安装使用jsoncpp、json-c库的方法实例

    Ubuntu20.04安装使用jsoncpp、json-c库的方法实例

    这篇文章主要给大家介绍了关于Ubuntu20.04安装使用jsoncpp、json-c库的相关资料,文中通过代码介绍的非常详细,对大家的学习或者工作就有一定的参考借鉴价值,需要的朋友可以参考下
    2024-04-04
  • C++使用easyX库实现三星环绕效果流程详解

    C++使用easyX库实现三星环绕效果流程详解

    EasyX是针对C/C++的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。这篇文章主要介绍了C++使用easyX库实现三星环绕效果,需要的可以参考一下
    2022-10-10

最新评论