首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt:如何获取设备的GMT偏移?

Qt:如何获取设备的GMT偏移?
EN

Stack Overflow用户
提问于 2010-12-06 17:23:26
回答 2查看 3.9K关注 0票数 0

一切都在标题中!我是在Qt 4.7.1上开发的,它是在诺基亚N8上使用的。

我认为我需要使用:QDateTimetimeSpec (Qt::OffsetFromUTC)

EN

回答 2

Stack Overflow用户

发布于 2010-12-06 20:16:09

是也不是。您说得对,Qt::OffsetFromUTC为您提供了当前正在使用的值。

但这会改变你所在时区的夏令时规则。向QDateTime添加全时区支持是一个长期未解决(尚未实现)的请求

http://bugreports.qt-project.org/browse/QTBUG-71

也就是说,现在,如果你在法国使用一个设备,并要求UTC偏移,你将得到一个小时,但当三月份切换到DST时,这个时间将变成两个小时。请记住这一点。

票数 0
EN

Stack Overflow用户

发布于 2012-09-20 00:50:07

下面是一个函数,它返回任何时区的UTC/GMT偏移。对于负的协调世界时偏差,您必须覆盖此函数并检查布尔值"isNegative“。我使用它来向服务器发送请求,如果我想检查时钟是否向前或向后移动,我只需调用该函数两次,一次是今天的日期,一次是明天的日期。如果它们都返回相同的值,那么我们就知道时钟在接下来的24小时内不会切换为夏令时。

代码语言:javascript
复制
QTime Calendar::getTimeZoneDiff(QDateTime midnightDateTime, bool &isNegative) {
    midnightDateTime.setTime(QTime(0,0));
    QDateTime utc   = midnightDateTime.toUTC();
    QDateTime local = midnightDateTime; 
    local.setTimeSpec(Qt::LocalTime);
    QDateTime offset = local.toUTC();
    QTime properTimeOffset = QTime(offset.time().hour(), offset.time().minute());
    offset.setTimeSpec(Qt::LocalTime);
    utc.setTimeSpec(Qt::UTC);

    if(offset.secsTo(utc) < 0){
        isNegative = true;
    }else{
        isNegative = false;
       properTimeOffset.setHMS(24 - properTimeOffset.hour() - (properTimeOffset.minute()/60.0) - (properTimeOffset.second()/3600.0), properTimeOffset.minute() - (properTimeOffset.second()/60.0), properTimeOffset.second());
        if(!properTimeOffset.isValid()){ //Midnight case
            properTimeOffset.setHMS(0,0,0);
        }
    }
   return properTimeOffset;
}

我的解决方案也在这里发布:Timezone offset

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4364858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档