首页 > 其他分享 >QT 计算两个日期时间差?(时间转时间戳)

QT 计算两个日期时间差?(时间转时间戳)

时间:2023-04-13 15:12:07浏览次数:41  
标签:QT dd time1 时间差 yyyy HH 时间 QDateTime

 时间戳时间转换工具

 时间换算工具

1、得出的结果单位是:天(不足一天为0,没有半天的说法)

  1. QDateTime time1 = QDateTime::fromString("2022-4-25 16:40:02", "yyyy-MM-dd HH:mm:ss");
  2. QDateTime time2 = QDateTime::fromString("2022-4-27 16:43:02", "yyyy-MM-dd HH:mm:ss");
  3. int days = time1.daysTo(time2);
  4. qDebug() << "time2 - time1=" << days ;

2、得出的结果单位是:秒或毫秒

  1. QDateTime time1 = QDateTime::fromString("2022-4-25 16:40:02", "yyyy-MM-dd HH:mm:ss");
  2. QDateTime time2 = QDateTime::fromString("2022-4-25 16:43:02", "yyyy-MM-dd HH:mm:ss");
  3. int seconds = time1.secsTo(time2);
  4. int msec = time2.msecsTo(time1);
  5. qDebug() << "time2 - time1=" << seconds << msec;

日期较往后的时间 放在括号内,不然得出的结果就是负数

3、获取当前日期,精确到毫秒

  1. //获取当前的时间
  2. QDateTime dTime =QDateTime::currentDateTime();
  3. QString sTime =dTime.toString("yyyy-MM-dd hh:mm:ss:zzz");

注:小时那里HH和hh的区别, 比如下午三点,HH就是15,hh就是03

4、时间转时间戳

方式一:toTime_t,这种方法转成时间戳的时候只能精确到s,不能直接在后面*1000就代表能精确到ms了,这是错的!

  1. QDateTime dTime =QDateTime::currentDateTime();
  2. dTime.setTimeSpec(Qt::LocalTime);//一定一定要设置。不然后面通过时间戳转过来的日期对不上
  3. int iCutTimeStamp = dTime.toTime_t(); //将当前时间转为时间戳 s

这种方法的时间戳转时间对应的方法是:

QDateTime dateTime1 = QDateTime::fromTime_t(cut_timestamp2);

方式二:可以精确到ms

  1. QDateTime date = QDateTime::currentDateTime();
  2. //基础单位为豪秒 时间戳
  3. qDebug() << time1.toMSecsSinceEpoch();

这种方法对应的时间戳转时间的方法是:

  1. QDateTime dd = QDateTime::fromMSecsSinceEpoch(date.toMSecsSinceEpoch());
  2. qDebug() << dd.toString("yyyy-MM-dd hh:mm:ss");

注:int值超过10位就会溢出,用时间戳计算时间差的时候用秒为单位即可,不然用ms为单位来计算会出bug的

标签:QT,dd,time1,时间差,yyyy,HH,时间,QDateTime
From: https://www.cnblogs.com/mkmkbj/p/17314921.html

相关文章

  • Qt之QTableWidget的使用
    #ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QtWidgets>#include<QDebug>#include<QJsonArray>#include<QJsonObject>#include<QJsonValue>#include<QJsonDocument>#defineTABLE_HEADER_STYLE"QHeaderVie......
  • mysql时间字段自动填充
    场景数据库中的表需要两个字段,创建时间,更新时间。了解mysql有这个机制,可以自动填充,就百度了下,就是不知道用了之后有什么弊端。altertable`issue`addcolumncreateTimedatetimedefaultCURRENT_TIMESTAMPafter`jira_id`altertable`issue`addcolumnupdateTimeda......
  • js 计算时间范围的时间差(只计算工作日,不计算周六周日,精确到天)
    直接上demo代码和截图btnClick(){ varoneDay=1000*60*60*24; vardays=0; //dates是一个时间范围,startDate是时间范围的开始时间,endDate是结束时间 varstartDate=this.dates[0]; varendDate=this.dates[1]; if(endDate.getTime()>0&&startDate.g......
  • windows系统设置状态栏时间显示读秒
    windows系统设置状态栏时间显示读秒要实现的效果如下图:一、打开注册表WIN+R输入【cmd】之后输入【regedit】回车二、修改注册表在注册表地址栏输入:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced在该目录【Advanced】下,右侧列表中寻......
  • 电网经济和频率控制的多层,多时间尺度模型方法 Julia源代码,代码按照高水平文章复现
    电网经济和频率控制的多层,多时间尺度模型方法Julia源代码,代码按照高水平文章复现,保证正确,可先发您文章看是否满足您的要求由于分散的可再生能源和存储的不断增加,电力系统受到根本性变化的影响。系统中新参与者的去中心化本质要求构建电网的新概念,并实现从几秒到几天的广泛控制......
  • Qt音视频开发37-识别鼠标按下像素坐标
    一、前言在和视频交互过程中,用户一般需要在显示视频的通道上点击对应的区域,弹出对应的操作按钮,将当前点击的区域或者绘制的多边形区域坐标或者坐标点集合,发送出去,通知其他设备进行处理。比如识别到很多人脸,用户单击某个人脸后指定对该人脸进行详细的信息查询等;再比如圈出某个区域......
  • sql打印的时间和数据库里面存储的时间不一致问题
    问题描述:在项目操作过程发现了一个时区的问题,问题现象为sql打印的时间和数据库里面存储的时间不一样。后来发现问题原因为mysql的时区为CST。网上搜索了下CST时区,才发现这个时区已经被诟病已久。它居然能够表示四种时区,分别为:美国中部时间CentralStandardTime(USA)UTC-06......
  • 向下取整内存与运行时间
    Math.floor虽然为js的内置函数库,但还是会存在调用函数库的问题,但parseInt为javascript的内置函数,并不会存在调用函数库这种操作,所以就结果而言使用parseInt向下取整会比Math.floor占用更少的内存以及更快的运行时间。使用parseInt使用Math.floor......
  • 跟踪员工考勤时间和出勤率的四种方法
    用于跟踪员工考勤时间和出勤的程序可以为企业带来各种好处,它可以帮助管理人员掌握正在进行的项目及其完成状态,并让员工更好地了解某些任务需要多长时间,以便他们可以做出相应的计划。当您有效地跟踪员工的出勤时间和出勤率时,工资单处理和合规性也会变得容易很多。如果您想知道如何跟......
  • HTTP协议和MQTT协议对比谁更好
    HTTP协议是Web联网的基础,也是应用最为广泛和流行的协议,HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。MQTT是一种基于发布/订阅模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IB......