QT中时间时区处理总结

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

目录

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.运行效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【NSX-T】搭建NSX-T环境 —— Lab 说明和准备工作

目录 Lab 说明VM列表IP地址规划使用192.168.1.0/24作为实验环境主IP网段使用192.168.2.0/24网段作为freenas存储网段NSX 网段 拓扑汇总vSphere 7vSphere 8 虚拟机部署顺序 准备工作 Lab 说明 VM列表 Y&#xff1a;表示已部署N&#xff1a;表示未部署 HostIPDomain NameOSServ…

清雪除冰,扫出“平安路” 开封市鼓楼区民政局社工组织开展除雪破冰志愿行动

近日&#xff0c;我市迎来大范围降雪天气&#xff0c;积雪融化、道路结冰、湿滑难行&#xff0c;造成居民群众出行不便和较大的交通安全隐患。为迅速清除积雪和道路结冰积水&#xff0c;保障辖区居民尤其是困境群体的出行安全&#xff0c;2023年12月11日下午&#xff0c;鼓楼区…

Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数

Kafka系列之:统计kafka集群Topic的分区数和副本数,批量增加topic副本数 一、创建KafkaAdminClient二、获取kafka集群topic元信息三、获取每个topic的名称、分区数、副本数四、生成增加topic副本的json文件五、执行增加topic副本的命令六、确认topic增加副本是否成功一、创建K…

系列二十七、Apache Jmeter使用

一、安装 下载安装包>解压到指定目录>双击打开D:\Programs\apache-jmeter-5.5\bin\ApacheJmeter.jar即可。我分享的ApacheJmeter链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1VI7f3buIWZbQEeq2CRbwlg?pwdyyds 提取码&#xff1a;yyds 二、使用 2.1、添…

@CrossOrigin解决跨域不生效问题

参考文献 CrossOrigin注解没有生效&#xff0c;解决方案集合_crossorigin注解不起作用-CSDN博客

MacOS 12 开放指定端口 指定ip访问

MacOS 12 开放指定端口 指定ip访问 在 macOS 上开放一个端口&#xff0c;并指定只能特定的 IP 访问&#xff0c;你可以使用 macOS 内置的 pfctl&#xff08;Packet Filter&#xff09;工具来实现。 以下是一些基本的步骤&#xff1a; 1、 编辑 pf 配置文件&#xff1a; 打开 /…

(数据结构)单链表的定义

#include<stdio.h> typedef struct LNode {int data;struct LNode* next; }LNode,*LinkList; //LNode为结构体类型&#xff0c;LinkList为指向单链表的指针 //初始化一个空的单链表 void InitList(LinkList L) {L NULL; //空表&#xff0c;暂时没有任何节点 } //判断单…

mysql:在字符串类型的列上创建索引,建议指定索引前缀长度

https://dev.mysql.com/doc/refman/8.2/en/create-index.html#create-index-column-prefixes 在字符串类型的列上创建索引&#xff0c;建议指定索引前缀长度&#xff0c;而没有必要用整个列来创建索引。因为用前面的字符创建索引&#xff0c;查询时并不会比在整列上创建索引慢很…

Self-Distillation from the Last Mini-Batch for Consistency Regularization中文版

Self-Distillation from the Last Mini-Batch for Consistency Regularization 从上一个小批量自发蒸馏&#xff0c;实现一致性正则化 摘要 知识蒸馏&#xff08;Knowledge distillation&#xff0c;KD&#xff09;展示了强大的潜力&#xff0c;作为一种强有力的正则化策略&a…

手把手教WSL如何访问宿主机USB设备

目录 工具安装window安装usbipd工具WSL usbip安装 Setupwindow&#xff08;Version>4.0.0&#xff09;window&#xff08;Version<4.0.0&#xff09;WSL 卸载 自从windows推出的WSL功能&#xff0c;对广大的Linux和嵌入式开发者来说是巨大福利&#xff0c;基本可以媲美日…

【头歌系统数据库实验】实验10 SQL互联网业务查询-1

目录 第1关&#xff1a;查找购买个数超过20,重量小于50的商品&#xff0c;按照商品id升序排序 第2关&#xff1a;查询向follow表中user_id 1 的用户&#xff0c;推荐其关注的人喜欢的音乐 第3关&#xff1a;查询向follow表中user_id用户&#xff0c;推荐其关注的人喜欢的音…

MinGW编译Python至pyd踩坑整理

title: MinGW编译Python至pyd踩坑整理 tags: [Python,CC] categories: [开发记录,Python] date: 2023-12-12 13:48:20 description: sidebar: [‘toc’, ‘related’,‘recent’] 注意需要魔法 用scoop自动安装配置MinGw 需要魔法&#xff0c;不需要手动配置mingw scoop in…

WPF使用WebBrowser报脚本错误问题处理

前言 WPF使用WebBrowser报脚本错误问题处理,我们都知道WPF自带的WebBrowser都用的IE内核,但是在特殊的条件下我们还需要用到它,比如展示纯html简单的页面。再展示主流页面的时候比如用到Jquery高级库或者VUE等当前主流站点时经常就会报JS脚本错误,在Winform里面我们一句代…

(十六)Flask之蓝图

蓝图 Flask蓝图&#xff08;Blueprint&#xff09;是Flask框架中用于组织和管理路由、视图函数以及静态文件的一种机制。它提供了一种将应用程序拆分为更小、可重用组件的方式&#xff0c;使得项目结构更清晰&#xff0c;代码更易于维护。 使用Flask蓝图&#xff0c;可以将相…

mysql中NULL值

mysql中NULL值表示“没有值”&#xff0c;它跟空字符串""是不同的 例如&#xff0c;执行下面两个插入记录的语句&#xff1a; insert into test_table (description) values (null); insert into test_table (description) values ();执行以后&#xff0c;查看表的…

VBA_NZ系列工具NZ10:VBA压缩与解压工具

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…

外贸开发信标题如何写?推荐的邮件主题行?

提高打开率的外贸开发信标题模板&#xff1f;怎么写好邮件主题&#xff1f; 一封引人注目的外贸开发信可以帮助您吸引潜在客户的注意&#xff0c;打开贸易大门。然而&#xff0c;写一个吸引人的外贸开发信并不容易。蜂邮将探讨如何撰写令人印象深刻的外贸开发信标题&#xff0…

java系列-LinkedHashMap

1.插入新节点时&#xff0c;会将该节点加到链表尾部 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{/*** The head (eldest) of the doubly linked list.*/transient LinkedHashMapEntry<K,V> head;/*** The tail (young…

第三届iEnglish全国ETP大赛16强落位 诠释教育游戏价值

10日,与北方骤降的温度形成鲜明对比,以“玩转英语,用iEnglish”为主题的国内首个教育游戏活动第三届iEnglish全国ETP(English Through Pictures)大赛总决赛小组赛热火朝天的进行。随着“云帆沧海队”搭上末班车,本届活动16强全部产生,接下来的三个周末他们将向年度总冠军发起最…

vscode 远程连接内网服务器和通过跳板机远程连接外网服务器

1.打开vscode congfig文件&#xff0c;输入相应信息如下图 若本地没有id_rsa文件&#xff0c;可打开cmd进入.ssh目录下输入命令&#xff1a;ssh-keygen&#xff0c;创建该文件&#xff0c;会提示输入该文件保存地址以及设置秘钥密码&#xff08;最好不要设置密码&#xff0c;不…