C++Qt 获取互联网时间

简介: C++Qt 获取互联网时间

一、原理

C++Qt 向baidu发送请求,获取互联网时间,然后转本地时间

二、遇到的问题

在Qt中将获取到的时间日期转QDateTime时,转化失败,不知道什么原因,只能自己手写一个字符串拆分

QDateTime dt = QDateTime::fromString("Thu, 18 May 2023 05:38:45 GMT", "ddd, dd MMM yyyy hh:mm:ss 'GMT'");

不知道为什么转化失败???有人知道吗

之前自己手写一个字符串拆分,现在找到了解决方法,感谢@mideum

已解决

字符串包含英文日期和月份转QDateTime

代码

#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QDateTime>
#include <QDebug>
#include <QTimeZone>
#include <QDate>
#include <QTime>
void QtNetDate::getNetDateTime()
{
  QNetworkAccessManager *manager = new QNetworkAccessManager();
  QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://www.baidu.com")));
  QObject::connect(reply, &QNetworkReply::finished, [=]() {
  if (reply->error() != QNetworkReply::NoError) {
    qDebug() << "Error:" << reply->errorString();
    return;
  }
  QString dateStr = reply->rawHeader("Date");
  QDateTime m_dt = getDateTime(dateStr);
  qDebug() << m_dt.toString("yyyy-MM-dd hh:mm:ss");
  reply->deleteLater();
  manager->deleteLater();
  });
}
//字符串拆分
QDateTime QtNetDate::getDateTime(QString str_datetime)
{
  //"Thu, 18 May 2023 05:38:45 GMT" 
  int year = str_datetime.mid(12, 4).toInt();
  QString str_month = str_datetime.mid(8, 3);
  QVector<QString> months = { "Jan","Feb","Mar","Apr" ,"May" ,"Jun" ,"Jul" ,"Aug" ,"Sep" ,"Oct" ,"Nov" ,"Dec" };
  int month;
  if (months.contains(str_month))
  month = months.indexOf(str_month) + 1;
  int day = str_datetime.mid(5, 2).toInt();
  int hour = str_datetime.mid(17, 2).toInt();
  int minute = str_datetime.mid(20, 2).toInt();
  int second = str_datetime.mid(23, 2).toInt();
  QDateTime dt(QDate(year, month, day), QTime(hour, minute, second), Qt::UTC);
  QTimeZone localZone = QTimeZone::systemTimeZone();
  dt = dt.toTimeZone(localZone);
  return dt;
}


推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:

零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)

https://xxetb.xet.tech/s/VsFMs

相关文章
|
8天前
|
开发框架 Linux C语言
C、C++、boost、Qt在嵌入式系统开发中的使用
C、C++、boost、Qt在嵌入式系统开发中的使用
51 1
|
8天前
|
安全 网络协议 数据安全/隐私保护
掌握Qt和C++:构建你的第一个P2P应用程序
掌握Qt和C++:构建你的第一个P2P应用程序
127 3
|
8天前
|
存储 算法 API
【Qt 基本类】QDateTime类在C++中的应用与深度解析
【Qt 基本类】QDateTime类在C++中的应用与深度解析
50 0
|
8天前
|
设计模式 缓存 编译器
【C++ 元对象系统03】深入探索Qt反射:从原理到实践
【C++ 元对象系统03】深入探索Qt反射:从原理到实践
72 4
|
8天前
|
存储 网络协议 C语言
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
102 0
|
8天前
|
存储 传感器 安全
【串口通信】使用C++和Qt设计和实现串口协议解析器(二)
【串口通信】使用C++和Qt设计和实现串口协议解析器
96 0
|
8天前
|
存储 开发框架 算法
【串口通信】使用C++和Qt设计和实现串口协议解析器(一)
【串口通信】使用C++和Qt设计和实现串口协议解析器
307 0
|
8天前
|
安全 前端开发 C++
C++视角下的Qt按钮:从基础应用到高级定制(二)
C++视角下的Qt按钮:从基础应用到高级定制
53 2
|
8天前
|
XML JSON 算法
C++视角下的Qt按钮:从基础应用到高级定制(一)
C++视角下的Qt按钮:从基础应用到高级定制
102 2
|
8天前
|
Linux 数据处理 C++
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(一)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
84 0