21xrx.com
2024-12-22 22:24:39 Sunday
登录
文章检索 我的文章 写文章
C++计算日期时间差
2023-06-27 20:53:34 深夜i     --     --
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++提供了许多日期和时间处理函数,可以方便地实现日期和时间的计算。使用它们来计算日期和时间之间的差值将非常简单。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复