PySide QDateTime转字符串格式疑问:是否不支持6位微秒格式?
QDateTime是否支持微秒(小数点后六位)格式?
问题描述
我测试了以下代码:
utc_fmt = "yyyy/MM/dd hh:mm:ss.zzzzzz" new_date = QDateTime().fromString("2023/01/01 20:19:18.171123", utc_fmt) debug = new_date.toString("yyyy/MM/dd hh:mm:ss.zzzzzz") print("time:"+debug)
转换失败了。但把格式改为小数点后三位(zzz)后,转换成功:
utc_fmt = "yyyy/MM/dd hh:mm:ss.zzz" #... debug = new_date.toString("yyyy/MM/dd hh:mm:ss.zzz")
这是不是意味着QDateTime不支持ss.zzzzzz(微秒,六位小数)的格式?
解答
- Qt的
QDateTime中,z占位符仅对应毫秒级精度,最多支持三位(zzz),对应000-999的毫秒数值,用六位zzzzzz会导致解析失败。 - 若要处理微秒(小数点后六位),需使用
u占位符,正确格式应为ss.uuuuuu。 - 修正后的测试代码:
utc_fmt = "yyyy/MM/dd hh:mm:ss.uuuuuu" new_date = QDateTime().fromString("2023/01/01 20:19:18.171123", utc_fmt) debug = new_date.toString("yyyy/MM/dd hh:mm:ss.uuuuuu") print("time:"+debug)
- 补充:
QDateTime本身支持存储微秒级时间,只是解析和格式化时必须使用匹配的占位符,混淆z(毫秒)和u(微秒)才会出现转换失败的情况。
内容的提问来源于stack exchange,提问作者Rui
相关产品推荐
相关产品推荐

