phy1924
phy1924
2015-07-13 13:03
采纳率: 33.3%
浏览 1.7k

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • phy1924
    phy1924 2015-07-27 11:31
    已采纳

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

    点赞 评论
  • oyljerry
    oyljerry 2015-07-13 13:26

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

    点赞 评论
  • devmiao
    devmiao 2015-07-13 14:17
    点赞 评论
  • oyljerry
    oyljerry 2015-07-14 02: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 2015-07-16 01:33

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

    点赞 评论

相关推荐