0

全てはタイトルに!私は Qt 4.7.1 で開発しており、Nokia N8 用です。

QDateTimeと を使用する必要があると思いますtimeSpec (Qt::OffsetFromUTC)

4

2 に答える 2

0

以下は、任意のタイムゾーンの UTC/GMT オフセットを返す関数です。負の UTC オフセットの場合、この関数をオーバーライドし、ブール値の "isNegative" を確認する必要があります。サーバーにリクエストを送信するためにこれを使用します。時計が前後する日ではないことを確認したい場合は、関数を 2 回呼び出します。1 回は今日の日付で、次に明日の日付で呼び出します。どちらも同じ値を返した場合、時計は次の 24 時間でサマータイムに切り替わらないことがわかります。

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;
}

私のソリューションもここに投稿されています:タイムゾーン オフセット

于 2012-09-19T16:50:07.403 に答える
0

はいといいえ。Qt::OffsetFromUTC現在使用中の値が得られるのは正しいです。

しかし、これはあなたがいるタイムゾーンの夏時間のルールを考えると変更されます. に完全なタイムゾーンサポートを追加することは、長い間未解決の (まだ実装されていない) 要求QDateTimeです:

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

つまり、現在、フランスでデバイスを使用していて UTC オフセットを要求すると、1 時間になりますが、3 月に DST に切り替えると、それが 2 時間に変わります。覚えておいてください。

于 2010-12-06T12:16:09.050 に答える