QT中时间时区处理总结

news2025/1/24 7:25:37

  最近项目中要做跨国设备时间校正功能,用到了时区时间,在此做一下记录。

目录

1.常见时区名

2.测试代码

3.运行效果


1.常见时区名

  "Pacific/Midway": "中途岛 (UTC-11:00)",                                                               
  "Pacific/Honolulu": "檀香山 (UTC-10:00)",
  "America/Anchorage": "安克雷奇 (UTC-08:00)",
  "America/Los_Angeles": "洛杉矶/美国太平洋 (UTC-07:00)",
  "America/Tijuana": "提华纳/美国太平洋 (UTC-07:00)",
  "America/Phoenix": "凤凰城美国山区 (UTC-07:00)",
  "America/Chihuahua": "奇瓦瓦 (UTC-06:00)",
  "America/Denver": "丹佛/美国山区 (UTC-06:00)",
  "America/Costa_Rica": "哥斯达黎加/美国中部 (UTC-06:00)",
  "America/Regina": "里贾纳/美国中部 (UTC-06:00)",
  "America/Mexico_City": "墨西哥城/美国中部 (UTC-05:00)",
  "America/Chicago": "芝加哥/美国中部 (UTC-05:00)",
  "America/Bogota": "波哥大/哥伦比亚 (UTC-05:00)",
  "America/New_York": "纽约/美国东部 (UTC-04:00)",
  "America/Caracas": "加拉加斯/委内瑞拉 (UTC-04:30)",
  "America/Barbados": "巴巴多斯/大西洋 (UTC-04:00)",
  "America/Manaus": "马瑙斯/亚马逊 (UTC-04:00)",
  "America/Santiago": "圣地亚哥 (UTC-03:00)",
  "America/Sao_Paulo": "圣保罗 (UTC-03:00)",
  "America/St_Johns": "圣约翰/纽芬兰 (UTC-04:00)",
  "America/Montevideo": "蒙得维的亚/乌拉圭 (UTC-03:00)",
  "America/Godthab": "戈特霍布 (UTC-02:00)",
  "Atlantic/South_Georgia": "南乔治亚 (UTC-02:00)",
  "Atlantic/Cape_Verde": "佛得角 (UTC-01:00)",
  "Atlantic/Azores": "亚述尔群岛 (UTC+00:00)",
  "Africa/Casablanca": "卡萨布兰卡 (UTC+00:00)",
  "Europe/London": "伦敦/格林尼治 (UTC+00:00)",
  "Africa/Brazzaville": "布拉扎维/西部非洲 (UTC+01:00)",
  "Africa/Windhoek": "温得和克 (UTC+01:00)",
  "Europe/Amsterdam": "阿姆斯特丹/中欧 (UTC+02:00)",
  "Europe/Belgrade": "贝尔格莱德/中欧 (UTC+02:00)",
  "Europe/Brussels": "布鲁塞尔/中欧 (UTC+02:00)",
  "Europe/Sarajevo": "萨拉热窝/中欧 (UTC+02:00)",
  "Africa/Harare": "哈拉雷/中部非洲 (UTC+02:00)",
  "Africa/Cairo": "开罗/东欧 (UTC+02:00)",
  "Asia/Beirut": "贝鲁特/东欧 (UTC+03:00)",
  "Europe/Athens": "雅典/东欧 (UTC+03:00)",
  "Europe/Helsinki": "赫尔辛基/东欧 (UTC+03:00)",
  "Asia/Jerusalem": "耶路撒冷/以色列 (UTC+03:00)",
  "Asia/Amman": "安曼/东欧 (UTC+03:00)",
  "Europe/Minsk": "明斯克 (UTC+03:00)",
  "Asia/Baghdad": "巴格达 (UTC+03:00)",
  "Europe/Moscow": "莫斯科 (UTC+03:00)",
  "Asia/Kuwait": "科威特 (UTC+03:00)",
  "Africa/Nairobi": "内罗毕/东部非洲 (UTC+03:00)",
  "Asia/Baku": "巴库 (UTC+05:00)",
  "Asia/Tbilisi": "第比利斯 (UTC+04:00)",
  "Asia/Yerevan": "埃里温 (UTC+04:00)",
  "Asia/Dubai": "迪拜 (UTC+04:00)",
  "Asia/Tehran": "德黑兰/伊朗 (UTC+04:30)",
  "Asia/Kabul": "喀布尔/阿富汗 (UTC+04:30)",
  "Asia/Karachi": "卡拉奇 (UTC+05:00)",
  "Asia/Oral": "乌拉尔 (UTC+05:00)",
  "Asia/Yekaterinburg": "叶卡捷林堡 (UTC+05:00)",
  "Asia/Colombo": "科伦坡 (UTC+05:30)",
  "Asia/Almaty": "阿拉木图 (UTC+06:00)",
  "Asia/Krasnoyarsk": "克拉斯诺亚尔斯克 (UTC+07:00)",
  "Asia/Bangkok": "曼谷 (UTC+07:00)",
  "Asia/Shanghai": "北京/中国 (UTC+08:00)",
  "Asia/Hong_Kong": "香港/中国 (UTC+08:00)",
  "Asia/Irkutsk": "伊尔库茨克 (UTC+08:00)",
  "Asia/Kuala_Lumpur": "吉隆坡 (UTC+08:00)",
  "Australia/Perth": "佩思 (UTC+08:00)",
  "Asia/Taipei": "台北时间 (UTC+08:00)",
  "Asia/Seoul": "首尔 (UTC+09:00)",
  "Asia/Tokyo": "东京/日本 (UTC+09:00)",
  "Asia/Yakutsk": "雅库茨克 (UTC+09:00)",
  "Australia/Adelaide": "阿德莱德 (UTC+09:30)",
  "Australia/Darwin": "达尔文 (UTC+09:30)",
  "Australia/Brisbane": "布里斯班 (UTC+10:00)",
  "Australia/Hobart": "霍巴特 (UTC+10:00)",
  "Australia/Sydney": "悉尼 (UTC+10:00)",
  "Asia/Vladivostok": "符拉迪沃斯托克/海参崴 (UTC+10:00)",
  "Pacific/Guam": "关岛 (UTC+10:00)",
  "Asia/Magadan": "马加丹 (UTC+10:00)",
  "Pacific/Majuro": "马朱罗 (UTC+12:00)",
  "Pacific/Auckland": "奥克兰 (UTC+12:00)",
  "Pacific/Fiji": "斐济 (UTC+12:00)",
  "Pacific/Tongatapu": "东加塔布 (UTC+13:00)",
  "America/Halifax": "哈利法克斯 (GMT-03:00)",
  "Asia/Jakarta": "雅加达 (GMT+07:00)",
  "America/Argentina/Buenos_Aires": "布宜诺斯艾利斯 (UTC-03:00)",
  "Asia/Kolkata": "亚洲/加尔各答 (GMT+05:30)",
  "Asia/Kathmandu": "加德满都 (GMT+05:45)",
  "Asia/Yangon": "仰光(GMT+06:30)",
  "Pacific/Noumea": "努美亚 (GMT+11:00)",
  "Etc/UTC": "Etc/UTC (GMT+00:00)",
  "America/Recife": "累西腓 (GMT-03:00)",
  "Europe/Madrid": "马德里 (GMT+01:00)",
  "Europe/Istanbul": "伊斯坦布尔 (GMT+03:00)"

2.测试代码

#include <QCoreApplication>
#include <QDateTime>
#include <QTimezone>


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

    // 获取当前时间
    QDateTime curDateTime = QDateTime :: currentDateTime();
    qDebug() << curDateTime.toString("yyyy-MM-dd")
             << curDateTime.toString("yyyy-MM-dd hh:mm:ss")
             << curDateTime.toString("hh:mm:ss");

    // 使用指定日期和时间创建
    QDateTime customDateTime(QDate(2023, 12, 8), QTime(22, 56, 0));
     qDebug() << customDateTime.toString("yyyy-MM-dd hh:mm:ss");

     // 从QDateTime中分别得到QDate和QTime
     QDate date = curDateTime.date();
     QTime ctime = curDateTime.time();

     curDateTime.setDate(QDate(2023, 12, 9));
     curDateTime.setTime(QTime(23, 30, 0));
    qDebug() << curDateTime.toString("yyyy-MM-dd hh:mm:ss");
    qDebug() << curDateTime.toString(Qt::ISODate);

    // 根据当前日期时间获取特定时区的当前日期时间
    QDateTime tokyoDateTime = QDateTime::currentDateTime().toTimeZone(QTimeZone("Asia/Tokyo"));
    qDebug() << tokyoDateTime.toString("yyyy-MM-dd hh:mm:ss");

    // 字符串日期到时间
    QString strDateTime = "2013-12-08 23:17:50";
    qDebug() << "str datetime to datetime "
             << QDateTime::fromString(strDateTime, "yyyy-MM-dd hh:mm:ss").toString("yyyy-MM-dd hh:mm:ss");

    // 枚举时区
    /*
    int size = QTimeZone::availableTimeZoneIds().size();
    for (int i = 0; i < size; i++) {
        qDebug() << QTimeZone::availableTimeZoneIds().at(i);
    }
    */

    // 当前时间转UTC时间戳,秒,毫秒
    quint64 msecons = QDateTime::currentDateTime().toMSecsSinceEpoch();
    qDebug() << msecons;
    qDebug() << QDateTime::currentDateTime().toUTC().toMSecsSinceEpoch();
    qDebug() << QDateTime::currentDateTimeUtc().toMSecsSinceEpoch();

    qDebug() << QDateTime::currentDateTime().toSecsSinceEpoch()
             << QDateTime::currentDateTime().toUTC().toSecsSinceEpoch();
    // 根据毫秒时间戳恢复到当前时时间
    qDebug() << QDateTime::fromMSecsSinceEpoch(msecons, Qt::LocalTime).toString("yyyy-MM-dd hh:mm:ss");

    // 不管那个时区,UTC时间戳都是一样的
    qDebug() << QDateTime::currentDateTime().toTimeZone(QTimeZone("Asia/Tokyo")).toMSecsSinceEpoch()
             <<  QDateTime::currentDateTime().toMSecsSinceEpoch();

    // 指定时区得到时间
    qDebug() << QDateTime::fromMSecsSinceEpoch(QDateTime::currentDateTime().toTimeZone(QTimeZone("Asia/Tokyo")).toMSecsSinceEpoch(),
                                               QTimeZone("Asia/Tokyo")).toString("yyyy-MM-dd hh:mm:ss");


    return a.exec();
}

3.运行效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1297805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023中国(海南)国际高尔夫旅游文化博览会 暨国际商界峰层·全球华人高尔夫精英巡回赛 全国颍商自贸港行盛大启幕

2023中国&#xff08;海南&#xff09;国际高尔夫旅游文化博览会&#xff08;以下简称“海高博”&#xff09;暨全国颍商走进海南自贸港于12月7-9日在海口观澜湖盛大开幕。该活动由中国国际贸易促进委员会海南省委员会、海南省旅游和文化广电体育厅主办&#xff0c;中国国际商会…

用Java实现一对一聊天

目录 服务端 客户端 服务端 package 一对一用户; import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; imp…

数据结构中处理散列冲突的四种方法

1 开放定址法 1.1 定义 开放定址法就是一旦发生了冲突&#xff0c;就去寻找下一个空的散列地址 1.2 要求 只要散列表足够大 空的散列地址总能找到&#xff0c;并将记录存入 1.3 线性探测法 使用该公式用于解决冲突的开放定址法称为线性探测法 对于线性探测法&#xff0c…

rpc原理与应用

IPC和RPC&#xff1f; TCP是有三个特点&#xff0c;面向连接、可靠、基于字节流。粘包问题 RPC 而RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;又叫做远程过程调用。它本身并不是一个具体的协议&#xff0c;而是一种调用方式。 gRPC 是 Google 最近公布的…

GPT4停止订阅付费了怎么办? 怎么升级ChatGPT plus?提供解决方案

11月中旬日OpenAI 暂时关闭所有的升级入口之后&#xff0c;很多小伙伴就真的在排队等待哦。其实有方法可以绕开排队&#xff0c;直接付费订阅升级GPT的。赶紧用起来立马“插队”成功&#xff01;亲测~~~ 一、登录ChatGPT账号 1、没有账号可以直接注册一个&#xff0c;流程超级…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-5Laplace Transform of Convolution卷积的拉普拉斯变换

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-5Laplace Transform of Convolution卷积的拉普拉斯变换 Laplace Transform : X ( s ) L [ x ( t ) ] ∫ 0 ∞ x ( t ) e − s t d t X\left( s \right) \mathcal{L} \left[ x\lef…

php 接入 百度编辑器

按照github上的操作下载百度编辑器的包后&#xff0c;根据文档上的步骤操作&#xff08;可能会遇到报错&#xff09;&#xff1a; 1、git clone 仓库 2、npm install 安装依赖&#xff08;如果没有安装 grunt , 请先在全局安装 grunt&#xff09; 我的是报了下面的错&#…

Graphpad Prism10.1.0 安装教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件&#xff0c;它可以将科学图形、综合曲线拟合&#xff08;非线性回归&#xff09;、可理解的统计数据、数据组织结合在一起&#xff0c;除了最基本的数据统计分析外&#xff0c;还能自动生成统…

智慧工地安全管理方案,智慧工地云平台源码,java项目源码

智慧工地安全管理方案&#xff0c;智慧工地云平台源码 智慧工地是一种以信息技术为手段&#xff0c;全面提升建筑施工过程的管理水平、提高工程质量和安全、降低工程成本和风险、提高施工效率和管理水平的智能化技术和系统。通过物联网、互联网、大数据、云计算等技术的应用&a…

Vue.js实现可编辑表格并高亮修改的单元格

实现一个可编辑的表格&#xff0c;让用户可以修改表格中的数据&#xff0c;并且能够清楚地看到哪些单元格被修改过。这样的功能可以提高用户体验&#xff0c;也方便后端处理数据的变化。 本文将介绍如何使用Vue.js和Element UI的el-table组件来实现一个可编辑表格&#xff0c;…

课堂练习3.1:进程的描述与状态

3-1 进程是操作系统中一个非常重要的概念。程序的运行是通过进程来完成的。在层次结构的操作系统中&#xff0c;进程不仅是系统分配资源的基本单位&#xff0c;而且是 CPU 调度的基本单位。进程管理是操作系统最重要的功能之一。 通过本实训将会学习到&#xff1a;Linux 0.11 …

C#如何使用SqlSugar操作MySQL/SQL Server数据库

一. SqlSugar 连接MySQL数据库 public class MySqlCNHelper : Singleton<MySqlCNHelper>{public static SqlSugarClient CnDB;public void InitDB() {//--------------------MySQL--------------------CnDB new SqlSugarClient(new ConnectionConfig(){ConnectionString…

谈谈 LLM 在推荐域的渗透,探索推荐新范式

搜索慢慢的被大模型渗透&#xff0c;那么很自然很多人想到了推荐&#xff0c;但是推荐是不是真的可以被大模型渗透呢&#xff1f;大模型能改变推荐的范式吗&#xff1f; 最近大模型真的很火&#xff0c;从个人到公司&#xff0c;各行各业都在学习大模型、总结大模型和尝试应用…

SpringBoot项目静态资源默认访问目录

SpringBoot项目&#xff1a;静态资源默认访问目录 参考博客&#xff1a;https://blog.csdn.net/weixin_43808717/article/details/118281904

Brushed DC mtr--PIC

PIC use brushed DC mtr fundmental. Low-Cost Bidirectional Brushed DC Motor Control Using the PIC16F684 DC mtr & encoder

iOS——UIPickerView选择器

UIPickerView UIPickerView是 iOS 开发中常用的用户界面组件之一&#xff0c;用于在垂直方向上显示一个滚动的列表&#xff0c;用户可以通过滚动选择其中的一项。 UIPickerView的协议方法 UIPickerView和UItableView差不多&#xff0c;UIPickerView也要设置代理和数据源。UI…

【Effective C++】条款7:为多态基类声明virtual析构函数

如果你实现的一个类打算作为基类&#xff0c;并且要实现多态&#xff0c;那么就应该将析构函数声明为virtual。 class TimeKeeper { public:TimeKeeper();~TimeKeeper(); }; TimeKeeper::TimeKeeper() {cout << "TimeKeeper构造" << endl; } TimeKeeper:…

修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块

最近在研究imx6ull linux下4G模块驱动的移植&#xff0c;参考的移远ec20的移植方法&#xff0c;添加了GobiNet驱动&#xff0c;编译了quectel-CM工具&#xff0c;并且可以正常拨号&#xff0c;分配到ip&#xff0c;如下&#xff1a; ping外网也没有压力&#xff0c;如下…

MySQL之数据库及表操作

MySQL之数据库及表操作 文章目录 MySQL之数据库及表操作一、数据库的基本结构二、数据库的创建和删除三、数据表的结构定义和操作四、数据的插入五、主键和自增长属性1、什么是主键2、自增长属性 一、数据库的基本结构 数据库系统由数据库服务器为载体&#xff0c;拥有一个或者…

实用篇 | 一文学会人工智能中API的Flask编写(内含模板)

----------------------- &#x1f388;API 相关直达 &#x1f388;-------------------------- &#x1f680;Gradio: 实用篇 | 关于Gradio快速构建人工智能模型实现界面&#xff0c;你想知道的都在这里-CSDN博客 &#x1f680;Streamlit :实用篇 | 一文快速构建人工智能前端展…