[经验分享] 关于单片机C语言实现计算任意两个时间点相隔分钟数的问题

[复制链接]
514|0
 楼主| saservice 发表于 2023-9-28 21:00 | 显示全部楼层 |阅读模式
  1. #include <stdio.h>

  2. typedef struct Time{
  3. int Y,M,D,h,m,s;
  4. }Time;

  5. Time time1 = {20,7,28,5,30,10};
  6. Time time2 = {20,7,29,6,10,10};

  7. /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  8. *函数名称:Day_Diff
  9. *函数功能:计算任意日期的相隔天数
  10. *输入参数:time1 结构体指针 , time2结构体指针
  11. *返回参数:天数
  12. * <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
  13. int Day_Diff(Time *time1 , Time *time2)
  14. {
  15. int year2 , month2 , day2;
  16. int year1 , month1 , day1;
  17. month1 = (time1->M + 9)%12;
  18. year1 = time1->Y - month1/10;
  19. day1 = 365 * year1 + year1 / 4 - year1 / 100 + year1 / 400 + (month1 *306 + 5) / 10 + (time1->D - 1);

  20. month2 = (time2->M + 9) % 12;
  21. year2 = time2->Y - month2 / 10;
  22. day2 = 365 * year2 + year2 / 4 - year2 / 100 + year2 / 400 + (month2 *306 + 5) / 10 + (time2->D - 1);
  23. return (day2 - day1);
  24. }

  25. /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  26. *函数名称:TimeSub
  27. *函数功能:计算任意两个时间点相隔分钟数
  28. *输入参数:Day 天数 , time1 结构体指针 , time2结构体指针
  29. *返回参数:
  30. * <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
  31. int TimeSub(int Day , Time *time1,Time *time2)
  32. {
  33. long t1,t2,t;
  34. t1 = (time1->h * 3600) + (time1->m * 60) + (time1 -> s);
  35. t2 = (Day * 24 *3600) + (time2->h * 3600) + (time2->m *60) + (time2 -> s);

  36. t = (t2 - t1) /60;
  37. return t;
  38. }


  39. int main()
  40. {
  41. int num = 0;
  42. int day = 0;
  43. day = Day_Diff(&time1 , &time2);
  44. printf("day = %d\r\n",day);
  45. num = TimeSub(day,&time1 , &time2);
  46. printf("%d\r\n" , num);
  47. return 0;
  48. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

1545

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部