获取特定日期的时差
Get time difference from specific day
我试图在chrono
名称空间中找到一些实用程序,以向我的应用程序提供我在C#
程序中具有的相同功能。我需要做的是计算两个特定日期之间的时差,但我找不到这么具体的东西。例如,下面是我的c#代码:
var startDate = new DateTime(2000, 1, 1);
int diffDays = (DateTime.Today.Date - startDate.Date).Days;
return diffDays.ToString();
在C++
中是否存在等效函数
// system_clock::from_time_t
#include <iostream>
#include <ctime>
#include <ratio>
#include <chrono>
int main ()
{
using namespace std::chrono;
// create tm with 1/1/2000:
std::tm timeinfo = std::tm();
timeinfo.tm_year = 100; // year: 2000
timeinfo.tm_mon = 0; // month: january
timeinfo.tm_mday = 1; // day: 1st
std::time_t tt = std::mktime (&timeinfo);
system_clock::time_point tp = system_clock::from_time_t (tt);
system_clock::duration d = system_clock::now() - tp;
// convert to number of days:
typedef duration<int,std::ratio<60*60*24>> days_type;
days_type ndays = duration_cast<days_type> (d);
// display result:
std::cout << ndays.count() << " days have passed since 1/1/2000";
std::cout << std::endl;
return 0;
}
学分:http://www.cplusplus.com/reference/chrono/system_clock/from_time_t/
这里有一个更简单的方法,使用这个仅头文件的开源库:
#include "date.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
auto startDate = 2000_y/jan/1;
auto diffDays = floor<days>(system_clock::now()) - sys_days{startDate};
std::cout << diffDays.count() << 'n';
}
当前输出:6138
这里是一个wandbox链接,您可以在其中粘贴上述代码,并使用不同版本的gcc和clang自己尝试。
相关文章:
- 查询SQLite数据库中的日期
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- Log4cpp:以UTC/GMT时区打印日期
- 使用C++的日期库读取时间
- 日期格式为C++
- 如何在 C++20 计时中为日期添加天数?
- 如何在QTableView中排序和更改日期格式
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- Gtkmm 会不断检查 Gtk::日历上的所选日期是否发生变化
- 为什么我在地图中搜索STL时差很大?
- fmt 与 Howard Hinnant 的日期:为什么从 fmt::to_string "{}"?FMT 和日期的最佳实践?
- 使程序检查当前日期是否=预期日期
- 如何找到两个日期之间的时间差异(以秒和纳秒为单位)?
- JNI 日期值转换问题,在C++中获取不同的长整型值
- 确定夏令时是否适用于特定日期
- C++日期库因时区而失败
- 向日期运算符添加天数+
- 为什么在C++中获取日期和/或时间如此复杂?
- 获取特定日期的时差
- 将R转换为Rcpp:向量中连续日期之间的平均时差