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端夏令时打开