使用ctime检索时间,包括时区
retrieving time including time zone using ctime
我想从struct tm中检索时区作为下面的格式
2011-12-32 12:13:05 +0530(获得使用gtime)
我可以获得前两组,但无法获得获取时区值的方法。请让我知道它应该如何得到使用c++时间的时区。
问候,iSight
如果您真的想使用标准C库来获取时区,请尝试使用time.h中声明的外部变量'timezone'。请记住,它的值是在tzset()函数调用之后设置的。每个依赖于时区的时间转换函数都会隐式地调用这个函数。你也可以显式地调用tzset()。
'timezone'变量应该像这样在time.h中声明:
extern long timezone;
以秒为单位表示本地时间与UTC的时间差。您还可以使用exn char* tzname[2]来获取DST和非DST时间段的符号时区名称。
你不能直接从结构体tm中计算时区信息,除非你确切地知道与该结构体中存储的时间相对应的UTC时间;
我认为通过time.h检索的tm结构包含时区信息,如果您需要的只是与GMT的差异。
struct tm {
int tm_sec; /* seconds after the minute [0-60] */
int tm_min; /* minutes after the hour [0-59] */
int tm_hour; /* hours since midnight [0-23] */
int tm_mday; /* day of the month [1-31] */
int tm_mon; /* months since January [0-11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday [0-6] */
int tm_yday; /* days since January 1 [0-365] */
int tm_isdst; /* Daylight Savings Time flag */
long tm_gmtoff; /* offset from CUT in seconds */
char *tm_zone; /* timezone abbreviation */
};
下面的内容可以提供帮助:
uint64_t diff;
{
time_t secs = time (NULL);
tm timeParts;
memset(&timeParts, 0, sizeof(timeParts));
tm *timeInfo = localtime_r( &secs, &timeParts );
diff = mktime( timeInfo );
memset(&timeParts, 0, sizeof(timeParts));
timeInfo = gmtime_r ( &secs, &timeParts );
diff -= mktime( timeInfo );
}
return diff;
请注意,这段代码做了其他事情,但它显示了您可以用来检索您可能需要的信息的所有函数。
相关文章:
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 具有未知值时的时间复杂性
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 获取 QInputEvent 在 Qt 4.8 中被放入 QEventLoop 队列时的时间戳
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 标头,包括在 Swift 项目中使用C++文件时的错误
- 比较向量中的元素时所花费的时间呈指数级增长
- 交叉编译时包括外部库
- 在确定函数的时间复杂度时需要帮助
- OpenCV 函数 cv::remap() 的执行时间更长,当程序在两者之间进入睡眠状态时
- 为什么 std::chrono 在测量循环和编译器优化的并行 OpenMP 的执行时间时不起作用?
- gRPC C++我设置截止时间时客户端阻止
- 编译时条件包含.分段标头与包括整个实现
- C++ ZBar cmake 错误"找不到文件"时包括
- 超过CPU时间限制:当MPI_Sent一个非常大的int*时
- 为什么 Boost unordered_map 在第一次插入时需要太多时间?
- 连接() 在连接被拒绝时长时间挂起
- 为什么未达到的 try-catch 块会增加运行时时间
- 我如何解析包括分数时间的日期时间字符串