70 QDateTime时间戳转换有误

Qt:QDateTime之间的转换 功能:将指定格式的关于时间的String转换成QDateTime类型。注意格式一定要一一对应。 阅读详情

1 前言

        在开发工具中需要用时间戳转换成格式化时间来显示,但引用QT中自带的时间类QDateTime转换时,发现转换时间有误问题,转换的结果时分秒是正确的,但月份确实错误的。因此在未深入研究qt实现情况下,需要得到正确的格式化时间,需要另寻它法。

        本blog对该现象仅进行记录和给出“治标不治本的”解决方法。

2 现象

        首先给QT环境下出常用的时间戳转换格式化时间的方法。

QDateTime QDstarttime = QDateTime::fromTime_t(startTime); //时间戳非毫秒级
QString strStartTime = QDstarttime.toString("yyyy-mm-dd hh:mm:ss");
QDateTime QDstoptime = QDateTime::fromTime_t(stopTime); //时间戳非毫秒级
QString strStopTime = QDstoptime.toString("yyyy-mm-dd hh:mm:ss");

        基于上述代码的转换,对于两个时间戳分别是:1663223732 和 2114352000。转换结果如下图示,时、分、秒是正确的,但是月份是错误的。

        对于时间戳的正确与否,特定通过在线转换工具来检验,如下图示,可知时间戳是没问题的。 

        1663223732 :

        2114352000:

         因此根据上述情况,很有理由怀疑qt时间转换函数有问题,但由于没有时间看qt源码,所以想要在qt环境得到正确的格式化时间,得需要用其它代码替换。

3 解决方法(之一)

        本次的解决方案是,通过使用通用的时间函数,来避开使用QT的函数,从而实现正确的转换。

    ////////////////////////////////////////////////////////////
    time_t stime_t = startTime;
    struct tm *pstm = localtime(&stime_t);

    char tsBuf[128] = {0};
    sprintf(tsBuf, "%04d-%02d-%02d %02d:%02d:%02d",
                pstm->tm_year+1900, pstm->tm_mon+1,
                pstm->tm_mday, (pstm->tm_hour)%24, //时区问题
                pstm->tm_min,pstm->tm_sec);

    QString strStartTime(tsBuf);
    ////////////////////////////////////////////////////////////
    time_t etime_t = stopTime;
    struct tm *petm = localtime(&etime_t);

    char teBuf[128] = {0};
    sprintf(teBuf, "%04d-%02d-%02d %02d:%02d:%02d",
                petm->tm_year+1900, pstm->tm_mon+1,
                petm->tm_mday, (petm->tm_hour)%24, //时区问题
                petm->tm_min,petm->tm_sec);

    QString strStopTime(teBuf);
    ////////////////////////////////////////////////////////////

         用上述代码替换后,便可到正确的格式化时间。

over!

QT时间日期处理实战:从基础QDateTime到跨平台std::chrono的性能调优 本文深入探讨了QT时间日期处理的最佳实践,从基础QDateTime到跨平台std::chrono的性能调优。通过对比测试和实战案例,展示了在高频数据采集、实时监控等性能敏感场景下,如何选择合适的时间处理方案,提升20倍效率。特别推荐混合使用QDateTime和std::chrono实现高效时间处理。 阅读详情

相关推荐

Qt工业上位机开发实战:六大场景深度解析与避坑指南

Qt上位机开发是工业自动化软件的核心技术之一,涉及串口通讯、多轴运动控制、温湿度采集、触摸屏交互、汽车仪表渲染及RS485总线通信等关键能力。其本质并非简单UI搭建,而是融合实时性调度、硬件协议解析、抗干扰设计与嵌入式部署的系统工程。QSerialPort的精度局限、QTimer在工业环境下的抖动风险、QPainter硬渲染对帧率的严苛要求,共同构成真实产线中的技术门槛。本文聚焦步进电机控制与温湿度采集两大高频工业场景,详解QElapsedTimer微秒级计时、Modbus RTU手写解析、CRC校验与动态

weixin_33985507的博客 449

QDate,QDateTime和时间戳的转换(携带其他开发随笔)

QDateTime 转 时间戳 QDateTime time = QDateTime::currentDateTime(); //获取当前时间 int timeT = time.toTime_t(); //将当前时间转为时间戳 以上知识代码获取来自:博主:草莓蛋糕人 的:时间戳和QDateTime相互转换。 QDate 转 时间戳 QDate 直接 转成 时间戳的方法并没有找到...

wangyuhang12的博客 6665

如何查看在电脑里登陆过的微信帐号的聊天记录

打开微信电脑版,点击左下角 "≡" 菜单 → 选择 "设置"进入 "账号与存储"(旧版为" 文件管理 ")选项卡在 "存储位置"一栏查看当前实际保存路径,可点击" 打开文件夹 " 直接访问查看电脑里登录过的微信账号聊天记录,首选官方客户端直接登录查看,操作简单且安全;若账号已退出,可通过备份恢复功能处理;仅需查看媒体文件时,可定位到FileStorage 文件夹直接访问。无论哪种方式,都需遵守隐私保护原则,并注意聊天记录的加密特性限制。

捷利迅分享的博客 4546

关于时间戳和QDateTime相互转换的有关问题

1.toTime_t()把2014年12月19日10:24:40这样的QDateTime的格式转变为1418955940这样的时间戳

依夏Summer 4万+

Nsight Compute内存图表实战:如何快速定位CUDA内核的内存瓶颈(附配置截图)

本文详细介绍了如何使用Nsight Compute的Memory Chart功能快速定位和诊断CUDA内核中的内存性能瓶颈。通过解析内存图表中的逻辑与物理单元节点、连线颜色含义,并结合实战案例(如低L1缓存命中率、共享内存Bank冲突、全局内存访问未合并),指导开发者从可视化数据回溯至源代码,进行精准有效的内存访问优化,从而提升GPU程序性能。

zeta9的博客 479

SCADA|用KingSCADA实现设备台账的查询功能

以上为用KingSCADA实现设备台账的查询功能,另外还有一些细节功能,比如当点击增加按钮时弹出的信息窗口内的信息希望是在选中的某行信息,只要找到差不多的设备,修改个别参数即可,避免增加时弹出空白页,所有信息都需要填写。以上为实现设备台账查询的最简单实现,实际项目中可能会更复杂,你做过哪些设备台账或相关的功能,有比较好的创意或高难度功能方法,欢迎在留言区评论,或在交流群探讨,互通有无,共同进步。首先完成界面的组态工作,主要是通过查询按钮,查询SQLServer数据库的设备台账数据,然后填充到报表内。

做有价值的事,积累有价值的笔记! 480

QT QDateTime时间操作

时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

清凝 6322

STM32实现简单的智能电子相框

具体的代码案例和详细的代码实现超过5000字,无法在此篇文章中提供。但是,你可以参考STM32的官方文档和相应的图形库和多媒体库的文档,以获得更详细的实现细节和代码示例。对于硬件,我们可以选择使用STM32开发板,如STM32F4 Discovery。对于软件开发环境,我们将使用Keil MDK-ARM作为开发工具,并使用STM32CubeMX进行代码配置。在本文中,我们将使用STM32单片机实现一个简单的智能电子相框,包括显示照片、播放视频和音乐功能。接下来,我们将详细描述实现智能电子相框的步骤。

2401_85625565的博客 1006

QDateTime UTC和Local时间关系 toUTC()、toTime_t()、fromTime_t(uint seconds)[static]、setTime_t(uint seconds

UTC +时间差=本地时间 UTC是世界标准时间,时间差根据时区定,东边为正,西边为负,如北京东八区,时间差8小时。若UTC时间是 2021-04-19 00:00:00 那么北京时间就是 2021-04-19 08:00:00 用QDateTime获得本地时间 QDateTime::currentDateTimeUtc().toTime_t() 获得的时间是0时区的时间,也就是说比北京时间早8个小时。 下面可以获得电脑当前的时区正确时间值。 date_time=QDateTime::fromTime_

qq_38653347的博客 9233

模型预测控制(MPC)解析(三):多输入多输出系统

本文为阅读笔记,仅供学习交流使用!!! 在之前的文章中,为了简单起见,以单输入单输出系统为例介绍了MPC控制的实现方法。因为使用的是状态空间方程作为系统模型,这种方法可以轻松的扩展到多输入多输出系统中。 ...

行者无疆的博客 1万+

置顶必读(1) | 2026最新首发,全网最全 Spring Boot 学习宝典(附思维导图)

从0到1以知识点+实例+项目的教学模式对SpringBoot框架由浅入深进行学习,快来跟bug菌一起学习吧。

**My Coding Family** 16万+

解锁QDateTimeEdit在PySide6中的高级应用与性能优化

在PySide6界面开发中,日期时间输入是表单应用的核心痛点之一。传统的手动输入方式不仅用户体验差,还容易引发数据验证问题。QDateTimeEdit控件作为Qt框架的日期时间处理专家,通过优雅的API设计和强大的验证机制,为开发者提供了完整的日期时间输入解决方案。 ## 技术突破:QDateTimeEdit的架构设计与性能优势 深入理解QDateTimeEdit的技术架构,首先要从它的继承关

gitblog_00447的博客 914

Python爬虫实战:爬取国家气象局台风路径数据的完整教程

国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;

2201_76125261的博客 1025

基于Qt C++的睡眠监测数据分析工具开发实战

数据可视化与桌面应用开发是软件工程中的重要领域,其核心在于将复杂数据转化为直观的图形界面,辅助用户进行深度分析与决策。Qt C++框架凭借其高性能、跨平台原生体验和强大的图形库,成为构建此类专业级桌面工具的理想选择。它通过高效的C++底层运算处理海量时间序列数据,并利用Qt Charts等模块实现流畅的交互式图表渲染。在健康监测、工业控制等场景中,这类工具能对传感器数据进行实时处理与可视化,极大提升数据分析效率与精度。本文以睡眠监测数据分析为具体案例,深入探讨了如何利用Qt C++实现从数据导入、核心算法(

weixin_30851867的博客 381

46、大数据助力SDN优化流量管理与控制器

本文探讨了大数据在软件定义网络(SDN)中的应用,重点分析了如何利用大数据技术优化SDN控制器的可扩展性和弹性。通过介绍SDN控制器的核心功能及其面临的挑战,提出了集中式、分布式、混合式和分层式控制器放置策略,并结合大数据分析系统架构与技术,详细阐述了在控制器放置优化、流聚合和备份路径识别等场景中的实际应用。文章还给出了大数据分析在SDN控制器优化中的操作流程与优势,展望了未来结合人工智能与物联网的发展方向,强调了数据安全与算法效率的重要性。

xx56789的博客 86

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

关于QT的Time与QString之间转换

1、把当前时间转化为QString... public QDateTime qdate = QDateTime.currentDateTime(); datetime = qdate.toString("yyyy年MM月dd日ddddhh:mm:ss"); 如果不是QTime和QDate类比如说:通过TCP/IP接收到的char unsigned char 类等如何转换为QStrin

花园王国---Garden kingdom 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关于Qt的dateTime和时间戳转化数据不对的问题

其实qt时间转时间戳一般情况下没什么问题,但是我今天转化一组数据的时候。发现数据不对 QString str = "2020-11-10 6:3:32"; QDateTime time1 = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss"); qDebug() << "time1::" << time1 << "time_t" << time1.toTime_t(); 大家可以自己去试下。 我的输出结果是

家俊的博客 1523

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Qt获取当前时间(QDateTime、QTime、QDate)

Qt获取当前时间(QDateTime、QTime、QDate)

m0_73443478的博客 6619

C++|Qt工作笔记-C++获取当前系统时间,Qt获取当前系统时间及各标准间转化

目录   理论 源码 理论 标准C++中有个time.h(ctime)的头文件,他提供了把当前时间转成uint的! 在Qt中有一个QDateTime的类,这个类提供了几个静态方法: QDateTime::currentDateTime()   获取当前时间 QDateTime::fromTime_t()     从time_t中获取当前时间 QDateTime::fromStri...

IT1995的博客 7075

QT 时间格式转换

前言:数据库中时间一般是long 型时间 或者存的是 string , ;类似:1657695512793 例:2022-07-12 14:28:05 我们使用时,有时想用字符串,有时还有 long 型;需要转换;QT本身给我们提供了方便的

q610098308的专栏 4860

QDateTime类遇到的问题

QDateTime类#include <qdatetime.h>fromeString方法——从字符串QString到时间日期格式QDateTime 原文:QDateTime QDateTime::fromString ( const QString & string, Qt::DateFormat format = Qt::TextDate ) [static] QDateTime QDateT

uriel_chiang的博客 3376

incomplete type 'QDateTime' used in nested name specifier

问题:不完整类型 'QDateTime' 被用于嵌套名称说明符。 方法:添加类的头文件。

qbw_csdn的博客 4115

QDateTime 本地时间和UTC时间转换问题

先说一下UTC,搜索360百科: 协调世界时,又称世界统一时间、世界标准时间、国际协调时间,简称UTC,是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。1979年12月3日在内瓦举行的世界无线电行政大会通过决议,确定用“世界协调时间”取代“格林威治时间”,作为无线电通信领域内的国际标准时间。应用于天文学及天体,是测绘学上的一类用语。       UTC时间同本地时间关系  

CLP的博客 1万+

全网首发:QDateTime的接口fromTime_t()已删除,请使用fromSecsSinceEpoch(time_t)

你想把time_t转换为QDateTime,网上一搜索,都是fromTime_t()。你兴高采烈的写好代码,发现编译不过。因为这个接口已经删除了。

柳鲲鹏 383

QDateTime::fromString()函数使用的“诡异”问题

QT QDateTime::fromString()函数使用中,发生了“诡异”的问题,明明看起来很简单的日期时间转换,怎么都不成功,如: strTime =“2019/5/11 8:55:40 ” QDateTime dateTime =QDateTime::fromString(strTime ,"yyyy/M/d h:mm:ss");//转换为DateTime 百度也没有找到这种问题的解决方案。 刚开始百思不得其解。后调试发现日期时间字符串前后有空格,这可能是转换失败的原因。于是将日期时间字符串前..

amingscc的博客 6199
上一篇: 69 RGB图像转单色位图
下一篇: 71 Linux 应用程序 permission denied问题
Chasing_Chasing
博客等级 码龄10年 233粉丝 87原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值