2 phy1924 phy1924 于 2015.07.13 21:03 提问

请大神指教,关于tm转time_t的mktime函数

mktime函数貌似以该主机的时间转换,有没有能自己指定时区的转换方式,
因为我的程序想让用户指定一个日期,然后在全球其他planetlab电脑上转换成日历时间,
如果不能自己设时区的话转换出来肯定不一样,求大神指教怎么办?

6个回答

phy1924
phy1924   2015.07.27 19:31
已采纳

我解决的方法是用当前时间转为tm格式,可以读出里面的时区信息。然后用这个时区对要转换的tm做一个修正再mktime

oyljerry
oyljerry   Ds   Rxr 2015.07.13 21:26

你可以用格林尼治时间,gmmktime。然后到客户端再转换对应时区。

phy1924
phy1924 gmmktime是php的函数吧,c++的time.h里貌似没有
2 年多之前 回复
devmiao
devmiao   Ds   Rxr 2015.07.13 22:17
oyljerry
oyljerry   Ds   Rxr 2015.07.14 10:00

C用tmtime

/* from man 3 strftime */

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) { 
    char outstr[200];
    time_t t;
    struct tm *tmp;
    const char* fmt = "%a, %d %b %y %T %z";

    t = time(NULL);
    tmp = gmtime(&t);
    if (tmp == NULL) {
        perror("gmtime error");
        exit(EXIT_FAILURE);
    }

    if (strftime(outstr, sizeof(outstr), fmt, tmp) == 0) { 
        fprintf(stderr, "strftime returned 0");
        exit(EXIT_FAILURE); 
    } 
    printf("%s\n", outstr);
    exit(EXIT_SUCCESS); 
}  

phy1924
phy1924 其实我是想把tm转换为time_t,并且不依赖于计算机当前时区,貌似php有gmmktime,而c里没有类似的函数
2 年多之前 回复
phy1924
phy1924   2015.07.16 09:33

其实我是想把tm转换为time_t,并且不依赖于计算机当前时区,貌似php有gmmktime,而c里没有类似的函数

phy1924
phy1924   2015.07.27 19:31

我解决的方法是用当前时间转为tm格式,可以读出里面的时区信息。然后用这个时区对要转换的tm做一个修正再mktime

Csdn user default icon
上传中...
上传图片
插入图片