获取 C 时区的夏令时转换日期

2023-11-23

在 C 中,是否有一种简单的跨平台方法来检索给定时区开始和结束夏令时的日期?

我已经有了时区偏移信息以及当前是否正在观察夏令时,但我确实需要夏令时开始和结束的日期(对于我无法控制的外部依赖项)。在 Windows 中,我正在使用获取时区信息 to get 时区信息,但我找不到Linux/Solaris/Mac的类似功能。 我还应该指出,我不能仅仅依赖美国的夏令时采用规则,因为我无法预测它将在哪些国家/地区使用。

我知道获取此信息的唯一方法是通过zdump或者也许直接查看 /usr/share/lib/zoneinfo 文件本身,但我希望有更好的解决方案。

感谢您的任何帮助,您可以提供。


便携式和持续的处理这个问题的方法是建立全年 TZ 偏移表(当前时区当年的每一天)在应用程序启动时。将每天的午夜当地时间解析为 UTC (GMT),并记录相关日期相对于 UTC (GMT) 的有效时区偏移。寻找全年有效 TZ 偏移量的转变(转变将表明 DST 变化。)这种方法是一致且便携这仅取决于localtime/gmtime在相关平台上可靠运行,并将返回与以下内容完全一致的结果localtime/gmtime来电。不过,就变得有点如果您需要其他时区的 DST 信息,则更加复杂(比进程的默认时区。)

你也可以直接使用TZ/奥尔森数据库(代码可用于 *nix 和 Windows),对于最大的灵活性,但除非底层运行时/操作系统使用完全相同的时区信息(并且您的应用程序使用 TZ/Olson 时区信息and gmtime/localtime可以互换)然后你就会遇到不愉快的意外。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 C 时区的夏令时转换日期 的相关文章

  • 为什么我应该使用内联代码? [复制]

    这个问题在这里已经有答案了 我是一名 C C 开发人员 这里有几个始终困扰我的问题 常规 代码和内联代码之间有很大区别吗 主要区别是什么 内联代码只是宏的一种 形式 吗 选择内联代码时必须进行什么样的权衡 Thanks 表现 正如之前的答案
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • 命名管道客户端无法连接到作为网络服务运行的服务器

    我有一个服务在网络服务帐户下运行 该服务只是设置一个命名管道并侦听连接 NamedPipeServerStream listeningPipe new NamedPipeServerStream ourservicepipe PipeDir
  • 等待运算符错误

    我的代码有问题 我怎么解决这个问题 这个问题出现在await操作符中 public MyModel HttpClient client new HttpClient HttpResponseMessage response await cl
  • 值类型如何实现引用类型

    我遇到了一个值类型正在实现 ref 的场景 类型 只是想知道这怎么可能 幕后发生了什么 结构体是值类型 接口是引用 类型但结构可以实现接口而不会出现任何错误 有什么想法吗 提前致谢 实际上 它同时以两种不同的方式进行 首先 任何值类型都可以
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • 使用左连接获得不适当的输出

    我正在尝试获取变体列表 并且对于每个变体都获取所有subvariants list无论子变体属于何处 特别的Test say 100 这是示例数据 Id TestId SourceSubVariantId TargetSubVariantI
  • ef core 在更新数据库期间不使用 ASPNETCORE_ENVIRONMENT

    我使用 Visual Studio 通过一定的迁移来更新我的所有环境 使用下面的命令效果很好 update database Migration initMigrationProduct c ProductContext Environme
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • 解析连接字符串

    是否有标准库或代码片段可以使用这样的连接字符串获取值 string connstr DataServiceUrl http localhost foo RemoteServerConnection server http localhost
  • 当分配返回 0 时,具有空异常规范的运算符 new 调用构造函数

    我有以下声明 void operator new size t s PersistentMemory m throw return m gt allocatePersistentMemory s 我正在测试启动时的内存耗尽 这会导致m gt
  • 使用 DataGridViewCheckboxCell 真正禁用 DataGridView 中的复选框

    有谁知道如何使用 DataGridViewCheckboxCell 禁用 DataGridView 中的复选框 我可以将其设置为只读 并设置背景颜色 但我无法让复选框本身显示为禁用状态 有什么想法吗 Guess 你必须自己画 http so
  • 如何使用 .NET 捕获我的桌面视频?

    我想知道是否有任何方法可以使用 NET 捕获我的桌面的视频 截屏视频 我并不是在寻找截屏软件 而只是在寻找一种可以让我自己生成桌面视频的技术 我想过拍摄多个屏幕截图 但我不确定如何以编程方式生成带有图像序列的视频 有人有主意吗 Thanks
  • 小数精度

    我使用小数类型进行高精度计算 货币 但我今天遇到了这个简单的划分 1 1 37 这应该再次得到 37 http www wolframalpha com input i 1 2F 281 2F37 29 http www wolframal
  • 推断“x => { throw .. }”的 Lambda 与重载方法中的 Func 匹配吗?

    我不明白为什么 C 最终在以下 LINQPad 代码中执行不正确的扩展方法 void Main Actual Sync Action Expected Sync Action Run x gt x Dump Actual Async Tas
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720

随机推荐

  • 我应该使用 new Type() 还是仅使用 Type() 来调用构造函数

    两种语法是等效的 至少我认为它们是等效的 let o1 new Object or let o2 Object 您更常使用哪种方式 可读性问题怎么办 我觉得省略 新 会更实用一些 所以这是我的偏好 我喜欢您可以像对待任何其他返回类型实例的函
  • Terraform ELB access_log S3访问权限问题

    当我尝试为我的 elb access log 创建 s3 存储桶时 我遇到了 terraform 问题 出现以下错误 Error applying plan 1 error s occurred module elb author dev
  • 编译器能否将隐式声明的虚拟析构函数的实现放在单个单独的翻译单元中?

    以下代码编译并链接Visual Studio 2017 年和 2019 年 permissive 但不与任何一个编译gcc or clang foo h include
  • 在运行实例中切换到 Composer 模式

    如何轻松地将现有项目切换为 Composer 该项目现已从 6 1 更新到 8 7 并且应该在 Composer 中运行 全新的作曲家设置不是问题 对于上一个项目 我创建了一个新主机 通过 Composer 安装了 TYPO3 通过 Com
  • 如何更改屏幕方向,而不在Android上创建新的活动?

    不知道标题是否正确 事情是这样的 我有一个应用程序在手机和平 板电脑上的工作方式不同 在手机上它显示为纵向 在平板电脑上显示为横向 为了实现这一目标 我创建了一个名为 CoreActivity 的类 它由我的所有活动扩展并执行以下操作 pu
  • roslyn 编译器未使用 msbuild 复制到 AspnetCompileMerge 文件夹

    我有一个 NET MVC 项目 我正在尝试使用 Jenkins 进行部署 我一直让 Jenkins 运行 msbuild 然后使用 RoboCopy 复制生成的文件 我想切换为仅使用发布配置文件 发布配置文件在使用 Visual Studi
  • 根据内容调整 RichTextBox 的大小

    此代码根据 RichTextBox 的内容自动调整其大小 我遇到了问题 尤其是表格 t可能会被忽略 我尝试了托管解决方案 现在我正在尝试平台调用 电流输出 DllImport gdi32 dll static extern bool Get
  • 在 VueJS 中配置 Get、Post、Patch 全局标头的最佳方法

    我是 VueJs 的新手 我正在寻找在 VueJS 中为 Get Post Patch 配置全局标头的最佳方法 即使用方便 安全性强 目前我只是把它写在export default 对于每个组件 我知道这非常糟糕 所以我请求你们帮忙 感谢
  • 如何使用LDAP对用户进行密码验证?

    我正在编写一个客户端应用程序 使用OpenLDAP库 用户通过 LDAP 服务器进行身份验证 以下是无法比较用户的 userPassword 的硬编码示例程序 include
  • 页面加载后删除 div 时发生 jQuery 冲突

    我正在尝试从页面中删除一个div 最好完全阻止它加载 但现在我决定在页面加载后将其删除 当我尝试以下代码行时在jsFiddle中 the content正如预期的那样 div 被删除 但是 我也尝试过实施它一个实际的网站 但在这种情况下 c
  • Camera.getPicture 不是 ionic 3 中的函数

    我正在使用相机插件单击离子应用程序中的图片 但出现以下错误 OrdercancelPage html 24 ERROR TypeError Object is not a function at Camera getPicture inde
  • Unity构造函数注入其他参数

    我有一个带有构造函数的类 如下所示 public BatchService IRepository repository ILogger logger string user 在我的 DI 引导程序类中 我有以下内容RegisterType
  • 切换 python 打印的最佳方法是什么?

    我在游戏引擎中运行 Python 2 4 并且希望能够在需要时关闭所有打印 例如 我希望在调试版本中打开打印 然后在发布版本中关闭打印 它还必须尽可能透明 我在引擎的 C 代码中对此的解决方案是printf里面的函数vararg宏 并将其定
  • 从 Google Places API (Swift 3) 获取附近地点的列表

    我知道已经存在类似的威胁 但是exact我正在寻找的主题似乎没有被触及 我是一个编程新手 但是 我成功地运行了一个应用程序 它可以获取您当前的位置 将坐标转换为地址 并能够将您的位置数据存储在 tableView 中 现在我正在寻找一种方法
  • Html 锚标记 onclick() 和 href 同时执行

    如同HTML 锚链接 href 和 onclick 两者 帖子 我的是 a href tmp download mp3 Download link a The update 方法将向服务器发送另一个 HTTP GET 方法来更新已下载的文件
  • MATLAB 是否优化 diag(A*B)?

    假设我有两个非常大的矩阵A M N 和B N M 我需要的对角线A B 计算完整的A B需要 M M N 次乘法 而计算它的对角线只需要 M N 次乘法 因为不需要计算最终位于对角线之外的元素 MATLAB 是否实现了这一点并进行即时优化d
  • 如何更改log4j中的htmllayout

    我想更改Java中log4j的htmllayout 5列 时间 线程 级别 类别 消息 我的 log4j properties 是 log4j rootLogger DEBUG Console File log4j appender Con
  • org.apache.catalina.LifecycleException:子容器在启动期间失败

    SEVERE A child container failed during start java util concurrent ExecutionException org apache catalina LifecycleExcept
  • Spring - 无法解析 MVC“视图”thymeleaf

    我有一个简单的HomeController class package com example tacos import org springframework stereotype Controller import org spring
  • 获取 C 时区的夏令时转换日期

    在 C 中 是否有一种简单的跨平台方法来检索给定时区开始和结束夏令时的日期 我已经有了时区偏移信息以及当前是否正在观察夏令时 但我确实需要夏令时开始和结束的日期 对于我无法控制的外部依赖项 在 Windows 中 我正在使用获取时区信息 t