C语言将格林威治时间转为当地时间

比如这种格式:2013-09-08 04:00:06
要转为格林威治时间应该怎么做
用sqlite3自带的函数Datetime转就可以
select Datetime(calldate,'localtime'),billsec,disposition,userfield,src,dst from cdr

有个API叫做GetTimeZoneInformation
调用的参数就一个结构:TIME_ZONE_INFORMATION,这个结构有个成员叫bias,就是与格林威治时间的时差,以分钟为单位。比如中国就是-480.
剩下的你应该会了吧?
例:
TIME_ZONE_INFORMATION tz;
GetTimeZoneInformation(&tz);
int min=tz.bias;
然后你把你要转换的格林威治时间,加上这个分钟值,就得到本地时间了。追问

可是我要精确到秒级啊

追答

时区之间的时差以小时为单位,不存在秒的问题。
比如,格林威治时间是几点20分30秒,那转换到其他时区,只是前面的小时发生变化,后面的20分30秒是不变的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-31
1、有个API叫做GetTimeZoneInformation
调用的参数就一个结构:TIME_ZONE_INFORMATION,这个结构有个成员叫bias,就是与格林威治时间的时差,以分钟为单位。比如中国就是-480.

2、例如:
TIME_ZONE_INFORMATION tz;
GetTimeZoneInformation(&tz);
int min=tz.bias;
然后把要转换的格林威治时间,加上这个分钟值,就得到本地时间了。
第2个回答  2013-10-08
可以使用系统函数 localtime将标准时间转换为本地时间,函数包含在头文件time.h中。追问

能详细点吗?

第3个回答  2013-10-08
我们国家是在东八区,格林威治时间是 0 时区;
格林威治当地时间比中国的北京时间晚8小时。
也就是在我国的时上 -8,就是格林威治时间;
但是,注意24小时制,出现负数时,就是前一天了
第4个回答  2019-07-26

#include <time.h>

char* file_time(time_t mt,char* str)
{
struct tm* t = localtime(&mt);
sprintf(str,"%d月 %02d %02d:%02d",t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min);
return str;
}

相似回答