为什么mktime函数执行后得到的值与time_t类型的rawTime不相同?
答案:1 悬赏:50 手机版
解决时间 2021-01-25 02:44
- 提问者网友:精神病院里
- 2021-01-24 08:41
为什么mktime函数执行后得到的值与time_t类型的rawTime不相同?
最佳答案
- 五星知识达人网友:野慌
- 2021-01-24 09:52
时区不同。
gmtime得到的是本地时区的时间,mktime生成UTC秒即0时区的时间,北京时间与格林威治时间刚好差8个时区,换算成秒就是上面两个变量的差值追问
好像不太对啊,gmtime得到的也是UTC的时间吧,因为gmtime执行了之后时间是5:46分,而真实时间是13:47分,相差8个小时啊,所以这里应该没有本地时间才对啊,为什么也会有个差值呢?
追答应该就是时区问题,具体看两个函数msdn官方说明mktime是将本地时间转换为utc秒。这里把你传进去的utc时间默认是本地时间了,内部根据时区差异减了8小时。要想正确,应该用localtime函数代替gmtime。
gmtime得到的是本地时区的时间,mktime生成UTC秒即0时区的时间,北京时间与格林威治时间刚好差8个时区,换算成秒就是上面两个变量的差值追问
好像不太对啊,gmtime得到的也是UTC的时间吧,因为gmtime执行了之后时间是5:46分,而真实时间是13:47分,相差8个小时啊,所以这里应该没有本地时间才对啊,为什么也会有个差值呢?
追答应该就是时区问题,具体看两个函数msdn官方说明mktime是将本地时间转换为utc秒。这里把你传进去的utc时间默认是本地时间了,内部根据时区差异减了8小时。要想正确,应该用localtime函数代替gmtime。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯