最近學習IEC-102協議,源碼用Qt進行開發。本人負責將其移至到南瑞D5000里面,領導提出,如果當前接收到15分鍾之前的數據,需要將其拋棄掉,這就需要計算時間差。做了如下實驗,為防忘卻,特將其記錄下。
包含頭文件
#include <QCoreApplication>
#include<QString>
#include<QStringList>
#include<QDateTime>
文件名記錄了該文件應當生成的時間,首先就需要提取該時間。
int main(int argc, char *argv[])
{
QString FileNameStrU = "浙江.蛟禾光伏站_4Cwind_202004201600.rb";
QStringList FileNameTmp = FileNameStrU.split("_");
QString FileTime = FileNameTmp.at(2).left(12);
// QString 字符串轉成時間格式
QDateTime time = QDateTime::FileTime.fromString("yyyMMddhhmm");
// 獲取當前時間,可以精確到秒。
QDateTime current _time = QDateTime::currentDateTime();
//計算時間差,先將兩時間值 轉成uint型,再進行減操作
uint start_time = time.toTime_t();
uint end_time = current_tome.toTime_t();
//計算時間差,結果為秒:
int t_Ret = end_time - start_time;
if(t_Ret > 15 * 60)
printf("%s","file delay");
以上代碼輸出結果是 : file delay。