注:此文章只适合于C++与QML相结合的开发者阅读,既要熟悉Qt的开发环境又要对js语法做些了解,更要对QML解释性语言进行全面的学习。
最近开了一个项目管理系统的客户端,其中用到了C++与QML混合编程,其中一个QML界面需要用到当前的时间,通过服务器推送消息显示到QML界面,其他他们推送的数据中有以时间戳的字段,必须解析成我们标准的北京时间才可以,故了解了下js关于Date的一些语法与函数,对于Date详细请参考Js的Date语法。
开始由于Ui需要将时间的日月和时分秒分开,所以js里面是这样写的:
function getLocalMonTime(nS) { console.log("getLocalMonTime "+nS); var day = new Date(parseInt(nS)*1000);//.toLocaleString().replace(/年|月/g, "-").replace(/日/g, " "); console.log("getCurrentDate1 "+day.getUTCMonth()+"/"+day.getDate()); var tmp = day.getMonth()+"/"+day.getDate(); return tmp; }
function getLocalHourTime(nS) { console.log("getLocalHourTime "+nS); var day = new Date(parseInt(nS) * 1000);//.toLocaleString().replace(/年|月/g, "-").replace(/日/g, " "); //console.log("getCurrentDate2 "+day.getHours()+":"+day.getMinutes()); var tmp = day.getHours()+":"+day.getMinutes(); return tmp; }
后来发现日期和真实日期整整少了一个月,仔细一查getMonth()返回值为0~11之间,才明白函数返回值的意义有多重要。
下面说下QDateTime下把当前时间转化为时间戳UTC的方法:
qint64 tmp1 = QDateTime::currentDateTime().toTime_t();接下来贴几张图片看看QML的界面是如此简单: