QT中的夏令时
QDateTime dt = QDateTime::fromString("2019-09-04 10:19:59", Qt::ISODate); //字符串轉成時間(夏令時時間)
//QDateTime dt = QDateTime::currentDateTime(); //當前時間
qint64 ms = dt.toMSecsSinceEpoch(); //距離 1970-01-01T00:00:00.000 的毫秒數 UTC時間
if (dt.isDaylightTime()) //判斷是否是夏令時
{ms -= 60 * 60 * 1000; //調整時間減去 1小時
}
QDateTime dtNow = QDateTime::fromMSecsSinceEpoch(ms); //現在時間
QString sNow = dtNow.toString(Qt::ISODate); //2019-09-04T09:19:59//QString sGMT = dt.toUTC().toString(); //GMT時間//補充
QDateTime dCurrentTime = QDateTime::currentDateTime();
QString zone = dCurrentTime.timeZoneAbbreviation(); //當前時區 //阿留申群島夏令時//所有基準時間為UTC時間
//拿到 UTC 時間 毫秒數 計算夏令時
//date 為 毫秒數
qint64 date = 1567559999000; //與上面的 ms 值相同
QDateTime t = QDateTime::fromMSecsSinceEpoch(date);
if (t.isDaylightTime())
{date += 60 * 60 * 1000; //調整夏令時t = QDateTime::fromMSecsSinceEpoch(date);
}
QString strDt = t.toString(Qt::ISODate); 2019-09-04T09:19:59
備注:如果都用當前時間的毫秒(UTC)是不進行加減時間操作的。
操作:測試時需要把PC端夏令時打開
總結
- 上一篇: 英语速学法
- 下一篇: s3c2440移植MQTT