连接两个time_t值的日期和时间
Join the date & time of two time_t values
我写了一个函数,我相信它会连接一个time_t的日期部分和另一个的时间部分:
time_t joinDateTime( time_t date, time_t time )
{
tm tm_date( *gmtime( &date ) ), tm_time( *gmtime( &time ) );
tm_date.tm_hour = tm_time.tm_hour;
tm_date.tm_min = tm_time.tm_min;
tm_date.tm_sec = tm_time.tm_sec;
return mktime( &tm_date );
}
此函数不应执行任何时区转换,但mktime()
显然假定您赋予它的时间结构是本地时区,并将其转换为 UTC 0。如何修改此功能以不应用 mktime()
提供的时区转换?
time_t
始终采用 UTC 时间。如果这是您想要的,有一种更直接的方式来加入日期和时间。由于测量以秒为单位,因此您可以除以得到天数,并将剩余的时间用于时间。
time_t joinDateTime( time_t date, time_t time )
{
time_t days = date / (24*60*60);
time_t seconds = time % (24*60*60);
return days*24*60*60 + seconds;
}
GMTIME
struct tm * gmtime ( const time_t * timer );
将 time_t 转换为 tm 作为 UTC 时间
转换发生在您使用 gmtime
时请改用struct tm * localtime ( const time_t * timer );
相关文章:
- 使用 C++将时间戳转换为格式化的日期时间
- C++代码的 C# 日期时间等效项是什么?
- 如何在提升日期时间中创建日期范围?
- 在 c++ 中将 ISO 日期时间转换为本地日期时间并提取时间
- Rcpp/C++/R:比较日期时间矢量与日期时间时出错(错误:"运算符>"的不明确重载)
- 如何将毫秒的日期时间字符串转换为 UNIX 时间戳
- 扩展中的日期时间对象方法C++问题
- 将DateTime字符串分为C 的日期时间
- C++以微秒为单位解析日期/时间
- 仅将纪元字符串保存到 mysql 日期时间年/月/日,但没有小时分钟秒
- 使用提升解析日期时间字符串:采用个位数小时格式
- C++ Poco SQL 查询不返回具有'between'和'and'日期时间绑定的结果
- 快速将带有时区的日期时间字符串转换为 UNIX 时间戳(C++)
- 从C 的时间戳提取日期时间戳
- 标准::get_time 中的日期时间格式
- 生成包含分数和时区的完整 iso 日期时间表示字符串
- 通过 ODBC C++将带有日期时间的记录插入 SQL Server 2014 的问题
- 在 C++20 中获取当前日期/时间是否线程安全?
- mongocxx:插入日期时间
- Poco 日期时间格式化程序 - 使用当前时区打印时间戳