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未测试。