QT中的夏令时

7 篇文章 0 订阅
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端夏令时打开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值