程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了有没有办法在 Qt 中用时区解析时间?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决有没有办法在 Qt 中用时区解析时间??

开发过程中遇到有没有办法在 Qt 中用时区解析时间?的问题如何解决?下面主要结合日常开发的经验,给出你关于有没有办法在 Qt 中用时区解析时间?的解决方法建议,希望对你解决有没有办法在 Qt 中用时区解析时间?有所启发或帮助;

我需要解析像 '09:21:15 EST' 这样的字符串(其中 EST 是美国东部时区),以便关于夏令时/冬令时(夏令时)的信息是正确的,以便 UTC−05 :00 用于冬季日期,UTC−04:00 用于夏季日期。

还需要支持直接设置UTC偏移量——'09:21:15 UTC-04:00',这种情况下不应采用夏令时。

我在 Qt 文档中没有找到关于 QDateTime、QDate、QTime、QTimeZone 等的任何可理解和合理的内容。

有没有简单的方法可以解决这个问题?

解决方法

一般来说,在任何语言中,你的要求都无法可靠地完成。

  • EST 不是时区。它是时区 aspect 的英文缩写。
  • 有些地方使用 EST 而不使用 EDT,例如牙买加。 See more here.
  • 需要考虑非英语缩写,例如 HNE 用于加拿大法语区(例如蒙特利尔)。
  • 许多缩写含糊不清。例如,CST 可以是中部标准时间、古巴标准时间或中国标准时间。
  • 许多时区没有 any 缩写 - 即使是英文。它们有时会被赋予不合法或不常用的发明(编造的、人为的)缩写,但实际上,它们是通过其国家/地区名称或仅通过其 UTC 偏移量(对于给定的时间戳)来引用的。
  • 为了在多个时间戳的时区之间可靠地转换,您需要一个 IANA time zone identifier,例如 "America/New_York"QTimeZone 可以处理这些。
  • 在任何给定的时间戳上,您都可以拥有与 UTC 的偏移量,例如 -05:00。您可以在使用 QDateTime 时设置偏移量。
  • 如果您绝对确定您只使用来自北美的包含常见英文缩写的时间戳,您可以构建并使用字符串和偏移量之间的自以为是的映射,例如如"EST" == -5"EDT" == -4"CST" == -6"CDT" == -5等。但它只能将缩写映射到offset,而不能映射到时间区。 (另请参阅 the timezone tag wiki 中的“时区 != 偏移量”。)
,

Qt 可能已经实现了您需要的功能。

使用 QDateTime::fromString,您可以在 remaining = fsize while remaining > 0: msg = fd.read(1000) len = len(msg) sock.sendall(msg) remaining -= len 字符串中使用 while (file size > 0) block length = read in at most 1000 bytes from the file opened send the block to server file size -= block length 来标记时区字符。

也看看这个问题:Qt QDateTime from string with timezone and daylight saving
您可以在那里获得一个示例,该示例表明您需要 t 规范中的 format 才能处理夏令时。
但是,QDateTime::offsetFromUtc 取决于 QDateTime 的当前规范... 我想,在比较 LocalTime

之前,您需要始终将 QDateTime 对象转换为相同的 TimeSpec

大佬总结

以上是大佬教程为你收集整理的有没有办法在 Qt 中用时区解析时间?全部内容,希望文章能够帮你解决有没有办法在 Qt 中用时区解析时间?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: