21xrx.com
2025-06-17 21:09:06 Tuesday
登录
文章检索 我的文章 写文章
C++计算日期时间差
2023-06-27 20:53:34 深夜i     76     0
C++ 日期 时间 计算

在开发中,经常需要计算两个日期或时间之间的差值。C++提供了一些内置的日期和时间处理函数,可以方便地实现这一功能。下面将介绍如何使用C++计算日期时间差。

1.获取当前日期和时间

在C++中,获取当前日期和时间需要使用ctime库中的time()函数。time()函数返回自1970年1月1日格林威治标准时间以来经过的秒数。因此,我们可以通过计算两个时刻的时间戳之差来获取它们之间的差值。

示例代码如下:

#include <iostream>
#include <ctime>
int main()
{
  time_t now = time(0);
  std::cout << "当前时间戳:" << now << std::endl;
  tm *ltm = localtime(&now);
  std::cout << "当前年份:" << 1900 + ltm->tm_year << std::endl;
  std::cout << "当前月份:" << 1 + ltm->tm_mon << std::endl;
  std::cout << "当前日期:" << ltm->tm_mday << std::endl;
  std::cout << "当前小时:" << ltm->tm_hour << std::endl;
  std::cout << "当前分钟:" << ltm->tm_min << std::endl;
  std::cout << "当前秒数:" << ltm->tm_sec << std::endl;
  return 0;
}

运行上面的代码,输出如下:

当前时间戳:1633366065
当前年份:2021
当前月份:10
当前日期:4
当前小时:21
当前分钟:14
当前秒数:25

2.计算日期之间的差值

要计算两个日期之间的差值,我们需要使用ctime库中的mktime()函数,将时间结构体转换为时间戳,然后根据时间戳计算它们之间的差值。示例代码如下:

#include <iostream>
#include <ctime>
int main()
{
  tm start_time = {0};
  start_time.tm_year = 2020 - 1900;
  start_time.tm_mon = 2 - 1;
  start_time.tm_mday = 1;
  time_t start = mktime(&start_time);
  tm end_time = {0};
  end_time.tm_year = 2021 - 1900;
  end_time.tm_mon = 10 - 1;
  end_time.tm_mday = 4;
  time_t end = mktime(&end_time);
  double diff_seconds = difftime(end, start);
  std::cout << "两个日期之间的差值(秒):" << diff_seconds << std::endl;
  return 0;
}

运行上面的代码,输出如下:

两个日期之间的差值(秒):408691200

如果要计算两个日期之间的差值,可以将时间差转换为天数。

#include <iostream>
#include <ctime>
int main()
{
  tm start_time = {0};
  start_time.tm_year = 2020 - 1900;
  start_time.tm_mon = 2 - 1;
  start_time.tm_mday = 1;
  tm end_time = {0};
  end_time.tm_year = 2021 - 1900;
  end_time.tm_mon = 10 - 1;
  end_time.tm_mday = 4;
  time_t start = mktime(&start_time);
  time_t end = mktime(&end_time);
  double diff_seconds = difftime(end, start);
  int diff_days = diff_seconds / (24 * 60 * 60);
  std::cout << "两个日期之间的差值(天):" << diff_days << std::endl;
  return 0;
}

运行上面的代码,输出如下:

两个日期之间的差值(天):581

3.计算时间戳之间的差值

如果要计算两个时间之间的差值,我们可以直接计算它们的时间戳之差。示例代码如下:

#include <iostream>
#include <ctime>
int main()
{
  time_t start = 1628520000; // 2021/08/10 08:00:00
  time_t end = 1630454400// 2021/09/01 00:00:00
  double diff_seconds = difftime(end, start);
  std::cout << "两个时间之间的差值(秒):" << diff_seconds << std::endl;
  return 0;
}

运行上面的代码,输出如下:

两个时间之间的差值(秒):1934400

通过上面的示例代码,我们可以看到,C++提供了许多日期和时间处理函数,可以方便地实现日期和时间的计算。使用它们来计算日期和时间之间的差值将非常简单。

  
  

评论区