Qt获取时区和时间偏移量

    current_time = QDateTime.currentDateTime()
    current_zone = current_time.timeZone()
    current_zone_id = current_zone.id()
    print(current_zone_id)
    print(current_zone.offsetFromUtc(current_time))
    print(current_zone.standardTimeOffset(current_time))
    print(current_zone.daylightTimeOffset(current_time))
    # 输出如下:
    # b'Asia/Shanghai'
    # 28800
    # 28800
    # 0

    # 如果把Windows下的时区设置为(UTC+02:00)大马士革,会发现屏幕右下角的时间比北京时间只慢了五个钟,输出如下:
    # b'Asia/Damascus'
    # 10800
    # 7200
    # 3600

    # QDateTime和字符串的相互装换
    current_time = QDateTime.currentDateTime()
    str_t = current_time.addSecs(1800).toString("yyyy-MM-dd hh:mm:ss")
    str_t2 = current_time.addSecs(1800).toString("yyyy-MM-dd hh:00:59")
    datetime = QDateTime.fromString(str_t, "yyyy-MM-dd hh:mm:ss")
    print(current_time)
    print(str_t)
    print(str_t2)
    print(datetime)
    # 输出如下:
    # PyQt5.QtCore.QDateTime(2020, 3, 31, 14, 20, 24, 365)
    # 2020-03-31 14:50:24
    # 2020-03-31 14:00:59
    # PyQt5.QtCore.QDateTime(2020, 3, 31, 14, 50, 24)

根据Qt助手里对offsetFromUtc的解释得知,QTimeZone::offsetFromUtc(const QDateTime &atDateTime) 返回给定atDateTime的总有效偏移量,即添加到UTC以获取本地时间的秒数。这包括任何可能有效的DST偏移量,即它是给定日期时间的 standardTimeOffset() 和 daylightTimeOffset() 的总和。

ps:以上测试为Windows上的测试,Mac未测试。

你可能感兴趣的:(Qt,Python,qt,开发语言)