秒转时分秒(3种方法)

在日常开发时,经常会遇到计算剩余进度或者剩余时间的问题,比如计算剩余下载时间等等。本篇文章旨在提供几个常用的转换方式供各位参考。

1、秒转时分秒(方法壹)
QString FormatHHMMSS(qint32 total)
{
int hh = total / (60 * 60);
int mm = (total- (hh * 60 * 60)) / 60;
int ss = (total - (hh * 60 * 60)) - mm * 60;

QString hour = QString::number(hh, 10);
QString min = QString::number(mm, 10);
QString sec = QString::number(ss, 10);

if (hour.length() == 1)
    hour = "0" + hour;
if (min.length() == 1)
    min = "0" + min;
if (sec.length() == 1)
    sec = "0" + sec;

QString strTime = hour + ":" + min + ":" + sec;
return strTime;

}

2、秒转时分秒(方法贰)
借助进制转换与补零,可参考文章:https://hellokandy.blog.csdn.net/article/details/123003917

QString FormatHHMMSS2(qint32 total)
{
int hh = total / (60 * 60);
int mm = (total- (hh * 60 * 60)) / 60;
int ss = (total - (hh * 60 * 60)) - mm * 60;

QString strTime = QString("%1:%2:%3")
    .arg(hh, 2, 10, QLatin1Char('0'))
    .arg(mm, 2, 10, QLatin1Char('0'))
    .arg(ss, 2, 10, QLatin1Char('0'));

return strTime;

}

3、毫秒转时分秒(修正版)
注意:需要把“天”计算到“时”里面才是正确的答案!

QString FormatHHMMSS3(qint64 ms)
{
int ss = 1000;//ms
int mm = ss * 60;
int hh = mm * 60;
int dd = hh * 24;

qint64 day = ms / dd;
qint64 hour = (ms - day * dd) / hh;
qint64 minute = (ms - day * dd - hour * hh) / mm;
qint64 second = (ms - day * dd - hour * hh - minute * mm) / ss;
qint64 milliSecond = ms - day * dd - hour * hh - minute * mm - second * ss;

QString strTime = QString("%1:%2:%3")
    .arg(hour + day * 24, 2, 10, QLatin1Char('0'))
    .arg(minute, 2, 10, QLatin1Char('0'))
    .arg(second, 2, 10, QLatin1Char('0'));

return strTime;

}

测试代码
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

qint64 s = 123456;
qDebug() << "hhmmss=" << FormatHHMMSS(s);
qDebug() << "hhmmss2=" << FormatHHMMSS2(s);
qDebug() << "hhmmss3=" << FormatHHMMSS3(s * 1000);

return a.exec();

}
QTime时间格式转换
注意:这种方式对于超过一天的计算是不准确的,需要自己单独先计算是否超过了一天

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

qint64 s = 123456;//一天的总秒数:86400=24*60*60
QString tm = QTime(0, 0, 0).addSecs(int(s)).toString(QString::fromLatin1("HH:mm:ss"));
qDebug() << tm;

return a.exec();

}

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下方法将JS中的时分秒换为时间戳: 1. 使用`new Date()`构造函数将时分秒添加到当前日期中,然后使用`getTime()`方法获取时间戳。 ```javascript var timeString = '15:00:00'; // 时分秒字符串 var currentDate = new Date(); // 当前日期对象 var timeArray = timeString.split(':'); // 将时分秒字符串拆分为数组 currentDate.setHours(timeArray[0], timeArray[1], timeArray[2]); // 设置当前日期的时分秒 var timestamp = currentDate.getTime(); // 获取时间戳 console.log(timestamp); // 输出时间戳 ``` 2. 使用`Date.parse()`方法时分秒字符串换为时间戳。 ```javascript var timeString = '15:00:00'; // 时分秒字符串 var currentDate = new Date(); // 当前日期对象 var dateString = currentDate.toDateString(); // 获取当前日期的字符串表示(不包含时分秒) var dateTimeString = dateString + ' ' + timeString; // 拼接日期和时分秒字符串 var timestamp = Date.parse(dateTimeString); // 将日期时间字符串换为时间戳 console.log(timestamp); // 输出时间戳 ``` 3. 使用第三方库moment.js来处理时间换。 ```javascript var timeString = '15:00:00'; // 时分秒字符串 var currentDate = moment(); // 当前日期对象 var dateTimeString = currentDate.format('YYYY-MM-DD') + ' ' + timeString; // 拼接日期和时分秒字符串 var timestamp = moment(dateTimeString, 'YYYY-MM-DD HH:mm:ss').valueOf(); // 使用moment.js将日期时间字符串换为时间戳 console.log(timestamp); // 输出时间戳 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值