两个日期之间的秒差
Difference in seconds between two dates?
问题很简单,在其他语言中有许多API特定的方法,但我发现没有一个是简单而直接的跨平台c++使用。
如果我有两个日期,并且假定它们在相同的区域设置中,在c++中区分它们的最简单方法是什么?
我(多少)看过使用time.h
,创建两个tm
对象,将它们转换为UTC,然后区分它们。
当前的日期格式为:YY/MM/DD HH:mm:SS
(存储为单个整数)
好的,根据目前的答案,我已经做了以下(目前):
time_t calculate_seconds_between(
const uint Y1, const uint M1, const uint D1, const uint H1, const uint m1, const uint S1, // YY/MM/DD HH:mm:SS
const uint Y2, const uint M2, const uint D2, const uint H2, const uint m2, const uint S2
)
{
time_t raw;
time(&raw);
struct tm t1 = *gmtime(&raw), t2 = t1;
t1.tm_year = Y1 - 1900;
t1.tm_mon = M1 - 1;
t1.tm_mday = D1;
t1.tm_hour = H1;
t1.tm_min = m1;
t1.tm_sec = S1;
t2.tm_year = Y2 - 1900;
t2.tm_mon = M2 - 1;
t2.tm_mday = D2;
t2.tm_hour = H2;
t2.tm_min = m2;
t2.tm_sec = S2;
time_t tt1, tt2;
tt1 = mktime(&t1);
tt2 = mktime(&t2);
return (tt2 - tt1);
}
效果很好
要从YY/MM/DD HH:mm:SS
转换为struct tm
,您可以使用strptime(或创建一个等效的,如果你没有它)
const char * dateInput;
// ....
struct tm tm;
time_t val;
memset(&tm, 0, sizeof(struct tm));
strptime(dateInput,"%y/%m/%d %H:%M:%S",&tm);
val = mktime(&tm);
获得两个time_t
值后,可以调用difftime
新的c++ 11具有chrono库(也可以从boost中获得,用于非c++ 11编译器)
有了它,你可以做一些漂亮的事情,比如
boost::chrono::system_clock::time_point start = boost::chrono::system_clock::now();
// ...
boost::chrono::duration<double> sec = boost::chrono::system_clock::now() - start;
std::cout << "took " << sec.count() << " secondsn";
或
typedef boost::chrono::duration<long, boost::ratio<60> > minutes;
minutes m1(3); // m1 stores 3
minutes m2(2); // m2 stores 2
minutes m3 = m1 + m2; // m3 stores 5
相关文章:
- 如何找到两个日期之间的时间差异(以秒和纳秒为单位)?
- 日期和当前日期之间的差异
- CPP 程序二查找两个给定日期之间的天数,conol CMD
- Qml - c++ 类和 QmlRegisterType 创建的类之间的交换日期
- 十进制格式的日期之间的差异
- 解决方案在两个日期之间的天数内不起作用
- 使用 c++ 获取两个日期与时间字符串之间的差异(以秒为单位)
- 计算当前日期和用户输入日期问题之间的天数
- C 的两个日期之间的差异
- 如何使用C Win32 API计算两个日期之间的天数
- C++计算日期之间的差异
- 两个日期之间的 C++ 日期差异
- v8::值到日期之间的转换
- 两个对象之间的日期比较
- 确定日期之间的差异
- C++ 给定日期和今天日期之间的天数
- 找出日期之间的差异,并将其归类
- c++获取用户选择的日期与实际日期之间的年份(计算日、月、年)
- 两个日期之间的总天数
- 设计一个结构来存储时间和日期.写一个函数来计算两个时间之间的差(以分钟为单位)