当前位置:   article > 正文

C语言 2个日期相关的函数

C语言 2个日期相关的函数

读代码的过程中,遇到2个日期相关的工具函数, 记录一下。

比较日期,计算日期间隔(天数)

  1. #include<stdio.h>
  2. #include<Windows.h>
  3. #include<ctype.h>
  4. #include<string.h>
  5. // 几个日期相关的工具函数
  6. struct Date//日期
  7. {
  8. int year;
  9. int month;
  10. int day;
  11. };
  12. // 比较两个日期大小
  13. int compare_date(struct Date start, struct Date end)
  14. {
  15. //把日期转化为20180227的形式来比大小
  16. if (start.year * 10000 + start.month * 100 + start.day <= end.year * 10000 + end.month * 100 + end.day)
  17. return 1;//正确
  18. else
  19. return -1;//错误
  20. }
  21. //计算日期间隔
  22. int cal_date(struct Date start, struct Date end)
  23. {
  24. if (compare_date(start, end) == -1)
  25. {
  26. puts("日期错误");
  27. return -1;
  28. }
  29. else
  30. {
  31. int y1, m1, d1;
  32. int y2, m2, d2;
  33. m1 = (start.month + 9) % 12;
  34. y1 = start.year - m1 / 10;
  35. d1 = 365 * y1 + y1 / 4 - y1 / 100 + y1 / 400 + (m1 * 306 + 5) / 10 + (start.day - 1);
  36. m2 = (end.month + 9) % 12;
  37. y2 = end.year - m2 / 10;
  38. d2 = 365 * y2 + y2 / 4 - y2 / 100 + y2 / 400 + (m2 * 306 + 5) / 10 + (end.day - 1);
  39. return (d2 - d1);//日期间隔
  40. }
  41. }
  42. int main() {
  43. // 日期函数测试
  44. struct Date start, end;
  45. start.year = 2024;
  46. start.month = 7;
  47. start.day = 15;
  48. end.year = 2024;
  49. end.month = 8;
  50. end.day = 1;
  51. printf("start:%d-%d-%d\n", start.year, start.month, start.day);
  52. printf("end:%d-%d-%d\n", end.year, end.month, end.day);
  53. printf("compare_date: %d\n", compare_date(start, end));
  54. printf("cal_date: %d\n", cal_date(start, end));
  55. return 0;
  56. }
  57. // 输出结果:
  58. // start:2024-7-15
  59. // end:2024-8-1
  60. // compare_date: 1
  61. // cal_date: 17

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号