QT时间相关的使用(日期相减问题)

本文介绍如何在Qt中进行日期和时间的转换与计算,包括日期字符串到时间戳的转换及两个日期之间的天数计算方法。此外,还展示了如何获取指定天数前的日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt两个日期相减的问题

首先,由日期与时间戳的相互转换

QDateTime time = QDateTime::currentDateTime();   //获取当前时间  
int timeT = time.toTime_t();                     //将当前时间转为时间戳  

将一定格式的日期转换为时间戳

QString starttime ="2017-11-11 12:00:00";
QString endtime = "2017-11-13 12:00:01";
QDateTime start = QDateTime::fromString(starttime, "yyyy-MM-dd hh:mm:ss");
QDateTime end = QDateTime::fromString(endtime, "yyyy-MM-dd hh:mm:ss");
uint stime = start.toTime_t();
uint etime = end.toTime_t();

与toTime_t()功能相反的是fromTime_t(),把时间戳转为QDateTime类型。因为这个方法是静态的,所以使用方法为

QDateTime time = QDateTime::fromTime_t(timeT);  

两个日期相隔的天数由时间 戳来相减得到

 int ndaysec = 24*60*60;
 qDebug() << "Day = " << (etime - stime)/(ndaysec) + ((etime - stime)%(ndaysec)+(ndaysec-1))/(ndaysec) - 1;

注意:上面的计算中,天数相隔时间差24小时内为0天,可以这样理解,26小时大于24小时(一天),那么他们相差1天了,如果24小时内为1天计算,26小时大于24小时,那么就将后面的减一去掉就可以了。


Qt获取前几天的时间

 QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
 QString str = time.toString("yyyy-MM-dd"); //设置显示格式
 QString BeforeDaystr=time.addDays(-1).toString("yyyy-mm-dd");//获取前一天时间


具体上代码:

#include <QCoreApplication>
#include <QString>
#include <QDateTime>
#include <QTime>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString starttime ="2017-11-11 12:00:00";
    QString endtime = "2017-11-13 12:00:01";
    QDateTime start = QDateTime::fromString(starttime, "yyyy-MM-dd hh:mm:ss");
    QDateTime end = QDateTime::fromString(endtime, "yyyy-MM-dd hh:mm:ss");
    uint stime = start.toTime_t();
    uint etime = end.toTime_t();
    qDebug() << "starttime" << starttime;
    qDebug() << "endtime" << endtime;
    qDebug() << "......................";

    qDebug() << "etime" << etime;
    qDebug() << "stime" << stime;
    qDebug() << "etime - stime" << etime - stime;

    int ndaysec = 24*60*60;
    qDebug() << "Day = " << (etime - stime)/(ndaysec) + ((etime - stime)%(ndaysec)+(ndaysec-1))/(ndaysec) - 1;

    return a.exec();
}

结果如下:


### 计算 JavaScript 中两个日期时间差 在 JavaScript 中,可以通过 `getTime()` 方法获取两个日期对象之间的毫秒级时间差。`getTime()` 返回自 1970 年 1 月 1 日以来的毫秒数,因此可以轻松比较或计算两个日期之间的时间间隔。 以下是实现此功能的一个示例: ```javascript // 定义两个日期 const firstDate = new Date('January 1, 1998'); const secondDate = new Date('January 1, 1999'); // 使用 getTime() 获取毫秒级别的时间戳并相减 const timeDifferenceInMilliseconds = Math.abs(secondDate.getTime() - firstDate.getTime()); // 将毫秒转换为其他单位(如天) const millisecondsPerDay = 24 * 60 * 60 * 1000; // 每天有这么多毫秒 const daysDifference = timeDifferenceInMilliseconds / millisecondsPerDay; console.log(`Time difference in milliseconds: ${timeDifferenceInMilliseconds} ms`); console.log(`Time difference in days: ${daysDifference} days`); ``` 上述代码展示了如何通过 `Math.abs()` 来确保返回正值的时间差,并将其从毫秒转换为更易读的形式,比如天数[^1]。 需要注意的是,在处理涉及跨时区的操作或者长时间跨度的情况下,可能需要考虑夏令时或其他时钟调整的影响。在这种情况下,建议使用 UTC 时间来避免潜在问题[^2]。 此外,对于更加复杂的场景,例如分析遥感数据中的时间序列变化趋势,则可采用高级方法,如基于 FeatureCollection 的统计分析或是构建 TVDI 等复合指标来进行深入研究[^3][^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值