如何更改Windows系统时区?

2024-03-21

我正在编写一个软件,允许更改 Windows 中使用的当前时区参数:

到目前为止,我发现的设置系统范围时区的唯一参考是API(或其变体SetDynamicTimeZoneInformation.)但我不太确定如何使用它来更改当前时区?

例如,需要包含有关本地时间偏移、夏令时设置等各种信息的结构。我不明白为什么我需要填写所有这些信息,而我只想将当前时区从"(UTC-08:00) Pacific Time (US & Canada)" to "(UTC-07:00) Mountain Time (US & Canada)".

我是否正在寻找正确的 API 来执行此操作?


已经有一段时间了,所以让我尝试回顾一下我最终做了什么。不幸的是我的解决方案是特定于操作系统的:

  • 适用于 Windows Vista 及更高版本:

    1. Set SE_TIME_ZONE_NAME特权。

    2. Call 通过指定要设置的时区的详细信息。

    3. Remove SE_TIME_ZONE_NAME特权。

  • 对于 Windows XP:

    1. Set SE_SYSTEMTIME_NAME特权。

    2. Call 包含有关要设置的时区的信息。

    3. Reset SE_SYSTEMTIME_NAME特权回来了。

最后,对于两个操作系统,广播以下消息,让正在运行的应用程序知道时区已更改:

::SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)L"intl",
        SMTO_ABORTIFHUNG, 
        2 * 1000,   //the total wait time can be up to the value of uTimeout multiplied by the number of top-level windows.
        NULL);

附言。要获取有关当前时区的信息,请使用GetDynamicTimeZoneInformation or GetTimeZoneInformation对于WinXP。

此外,您可能需要检索所有可用时区的列表,您可以使用它来选择新(默认)时区的信息。您可以通过枚举/解析以下注册表项来获取它:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

Check and here https://blogs.msdn.microsoft.com/bclteam/2007/06/07/exploring-windows-time-zones-with-system-timezoneinfo-josh-free/有关其结构的信息。

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

如何更改Windows系统时区? 的相关文章

  • 沿着长数据序列在固定大小的移动窗口中查找中值

    给定一个数据序列 可能有重复项 一个固定大小的移动 窗口 从数据开始处每次迭代时移动窗口 序列 使得 1 从窗口中删除最旧的数据元素并添加新数据 元素被推入窗口 2 求每次移动时窗口内数据的中位数 以下帖子没有帮助 有效地找到随机序列的中值
  • 处理时区转换的 JavaScript 库

    是否有一个 JavaScript 库可以处理时区转换 并考虑 DST 规则和此类内容 我知道有类似的问题 但我见过的问题似乎都没有真正适合我的问题的答案 我想在时区 A 创建一个日期并能够对其进行操作 添加天数 小时等 然后将其转换为另一个
  • 有没有办法让我的程序用更少的代码运行?

    我为学校作业编写了以下代码 它编译并打印所有正确的消息 但出于我自己的好奇心 我想知道我的代码是否可以缩短并且仍然有效 我尝试了 signal 而不是 sigaction 但我听说 sigaction 比 signal 更受青睐 此外 此任
  • 如何自定义 ASP.Net Core 模型绑定错误?

    我只想从我的 Web API Asp net Core 2 1 返回标准化的错误响应 但我似乎不知道如何处理模型绑定错误 该项目刚刚从 ASP NET Core Web 应用程序 gt API 模板创建 我有一个简单的操作定义为 Route
  • ASP.NET 数据集 getdataBy 无法启用约束。一行或多行包含违反非空、唯一或外键约束的值

    你好 我有一个非常简单的网络表单 我在此表单上有一个按钮和一个网格视图 以及一个包含链接表 bill docket docket bill 等的数据集 在按钮上单击我使用以下代码 protected void button click ob
  • MSVC10 /MP 在项目中跨文件夹构建非多核

    我希望有人指出我们所遇到的错误或解决方法 使用 MP 编译项目时 似乎仅同时编译同一文件夹中的文件 我使用进程资源管理器来滑动命令行并确认行为 项目过滤器似乎对同时编译的内容没有影响 项目结构disk Folder project vcxp
  • std::async 参数的生命周期是多少?

    看来函数的参数是通过std async分享未来的生活 include
  • 使用 pthread_cond_signal 优雅地终止线程被证明是有问题的

    我需要发射一堆线程 并希望优雅地将它们拉下来 我正在尝试使用pthread cond signal pthread cond wait实现这一目标 但遇到了问题 这是我的代码 首先是thread main static void thrma
  • 对无符号 8 位整数进行左移操作 [重复]

    这个问题在这里已经有答案了 我试图理解 C C 中的移位运算符 但它们给我带来了困难 我有一个无符号 8 位整数 初始化为一个值 例如 1 uint8 t x 1 根据我的理解 它在内存中的表示方式如下 0 0 0 0 0 0 0 1 现在
  • memccpy 返回比 src 起始地址更低的内存地址

    我有一个学校项目 我必须重新编码memccpy 功能 我使用 2 个程序来检查我的代码是否正常工作 第一个是只有一个主程序的小程序 第二个程序是另一个学生开发的 可以找到here https github com yyang42 mouli
  • 如何实现可变虚拟成员函数

    所以我有这个功能 virtual void CallRemoteFunction const char pServerGameObjectId const char pFunctionName OVariant arg1 OVariant
  • Math.Sin、Math.Cos 和 Math.Tan 精度以及正确显示它们的方法

    我正在用 C 编写一个计算器 textBoxResult是一个文本框 我在其中显示数字 recount是以度为单位获取角度并以弧度为单位返回的函数 我的角度是从texBoxInput public double recount int nu
  • 为什么Windsor只能拦截虚方法或接口方法?

    我正在阅读文档 发现如果不使用接口 那么 Windsor 只能拦截虚拟方法 这是 Windsor 的限制还是 C 语言的限制 我正在寻找深入的答案 C 语言在这里完全无关 问题是拦截在运行时级别如何工作 一种技术是从类继承 实现接口并将其用
  • C++ 虚拟关键字与重写函数

    我正在学习c 并且正在学习virtual关键字 我在互联网上搜索试图理解它但无济于事 我进入编辑器并做了以下实验 期望它打印两次基本消息 因为我的印象是需要 virtual 关键字来覆盖函数 然而 它打印出了两条不同的消息 有人可以向我解释
  • 当 C 中没有足够的内存用于静态分配时会发生什么?

    当您动态分配内存时 例如malloc 1024 sizeof char 结果指针设置为NULL如果没有足够的可用内存来满足请求 当没有足够的内存来满足静态分配时会发生什么 例如char c 1024 char c 1024 不一定是静态分配
  • 找出该月第一个星期日/星期一等的日期

    我想在java中检测每个月第一周 第二周的第一个星期日 星期一的日期 我怎样才能实现它 我已经检查了 java 中的 Calendar 类和 Date 类 但无法找到解决方案 所以请帮助我解决这个问题 Calendar calendar C
  • C# 或 Windows 相当于 OS X 的 Core Data?

    我迟到了 现在才开始在 OS X Cocoa 中使用 Core Data 它令人难以置信 并且确实改变了我看待事物的方式 C 或现代 Windows 框架中是否有等效的技术 即拥有可免费保存 数据管理 删除 搜索的托管数据类型 还想知道Li
  • 不兼容的指针到字符转换

    我正在编写一个程序 将卡片值写入 52 个点字符的多维数组中 该程序是一个测试数组 稍后我将其作为函数写入主程序中 在程序中 我通过以下方式初始化 for 循环计数0通过51 我用一个switch语句调制13将卡牌值分配给数组点 但是 我收
  • C++ 项目编译为静态库,编译为动态库失败(链接器错误)。为什么?

    我有一个 VS2008 本机 C 项目 我希望将其编译为 DLL 它仅引用一个外部库 log4cplus lib 并使用其功能 当然也使用 log4cplus 的 h 文件 当我尝试将我的项目编译为静态库时 它成功了 当我尝试作为 DLL
  • C# 中的快速字符串解析

    在 C 中解析字符串最快的方法是什么 目前我只是使用字符串索引 string index 并且代码运行合理 但我忍不住认为索引访问器所做的连续范围检查必须添加一些东西 所以 我想知道我应该考虑哪些技术来增强它 这些是我最初的想法 问题 使用

随机推荐

  • 是否可以在将身份字段值保存到实体框架之前获取它

    我有一个客户和销售表 CUSTOMER Id int auto increment Name SALES Id int auto increment CustomerId int OrderTotal decimal 有了Guid我就可以做
  • 在 wampserver 上安装 PEAR

    在 wampserver 上安装 PEAR 的所有指南 例如交响乐指南 http trac symfony project org wiki HowToInstallPearOnWindowsWithWamp 假设我要在某个 PEAR 目录
  • 分布式序列号生成?

    我一般都实现了序列号生成过去使用数据库序列 例如使用 Postgres SERIAL 类型http www neilconway org docs sequences http www neilconway org docs sequenc
  • 如何在渲染前使用 setState 更新状态

    我将在序言中声明我是 React js 的初学者 我创建了一个我正在开发的项目示例 在该项目中 我在 componentDidMount 中调用 API 并获取对象数组 并将其设置为状态 它看起来是这样的 class App extends
  • 如何将@request注入到服务中?

    当我尝试将 request 注入到我的任何服务中时 我收到此异常 ScopeWideningInjectionException 检测到范围扩大注入 定义 service navigation 引用服务 request 属于比较窄的范围 一
  • 如何在多个 Angular 组件之间共享 api 响应?

    我试图把我的头绕过去并使用BehaviourSubject在 Angular 中 到目前为止还没有太多运气 我的目标是在我的组件之间共享 api 请求响应 这是我的项目的 stackblitz 设置 https stackblitz com
  • 在 Tomcat 中打开新线程

    我只是问理论问题 我有一个需要一段时间的操作 该操作是在某些 Servlet doGet doPost 方法或 Spring MVC 控制器内部执行的 打开新的后台线程并在那里执行是个好主意吗 不会导致性能问题吗 如果我在这种情况下使用 j
  • 通过 VPN 的 Python 请求给出 502 Bad Gateway

    我正在尝试使用以下命令从公司网络内的服务器获取一些数据requests图书馆 我使用 VPN 进入公司网络 并且还设置了公司代理 我尝试访问的地址仅在该公司网络内可见 import requests url http some privat
  • 将 clojure 映射/数组写入文件并读回

    我需要将 clojure 映射保存到文件中并稍后读回以处理它们 这就是我能想到的 有没有更好的方法来完成同样的事情 user gt def my data for a Person1 Person2 b Address1 Address2
  • 对 Python 正在处理其输出的外部程序进行计时

    我想测量我的 Python 脚本使用其输出的外部程序的执行时间 Calling extprogram产生输出的程序 目前我做了类似的事情 import time import subprocess def process output li
  • 尝试将打字稿库与 webpack 捆绑时导出未定义

    我有一个正在用打字稿开发的库 我有通过 tsc 构建它以将其用作 npm 包的解决方案 但 tsc 单独翻译每个文件 我想使用 webpack 将所有内容创建在一个缩小的文件中 但它不起作用 我做了一些测试 使用 module export
  • 如何在页面重新加载时将值保留在 blazor Web 程序集中的单例状态容器中

    我练习和学习blazor web assembly 我正在学习组件之间通信的方法 一种这样的方法是使用状态容器 这按预期工作 但它不能维持页面刷新的价值 这是我的状态容器类 AppState public class AppState pu
  • 了解使用右值/左值的模板参数推导

    这是来自的后续函数模板无法识别左值 https stackoverflow com questions 22166767 template function does not recognize lvalue 22166879 221667
  • C# 中的私有方法单元测试

    Visual Studio 允许通过自动生成的访问器类对私有方法进行单元测试 我编写了一个私有方法的测试 该方法编译成功 但在运行时失败 代码和测试的相当最小的版本是 in project MyProj class TypeA privat
  • 如何将不透明度应用于 CSS 颜色变量?

    我正在使用 Electron 设计一个应用程序 因此我可以访问 CSS 变量 我已经定义了一个颜色变量vars css root color f0f0f0 我想用这个颜色main css 但应用了一些不透明度 element backgro
  • 在 WSO2 Integration Studio 中将双精度数转换为整数

    我正在 XPath 表达式中执行算术运算 在下面的代码中 qty1和qty2是双倍的 因此我得到的结果是双倍的 我想将结果转换为整数并将其保存在属性中 如何在 WSO2 Integration Studio 中实现它
  • CasperJS/PhantomJS 在加载页面时卡住

    我正在使用 phantomjs 运行以下脚本 var casper require casper create var url https itunesconnect apple com itc static login view 1 pa
  • 在 Visual Studio 2017 中使用 Windows 窗体应用程序?

    我正在关注 Udemy 系列 它要求的第一件事是创建一个 Windows 窗体应用程序 使用 C 我不认为这是我的选择之一 这是因为我使用的是免费版本吗 我已经安装了 Windows Template Studio 为了开发WPF Wind
  • 这些 jQuery 就绪函数有什么区别?

    有什么区别 function and document ready function 什么都没有 http api jquery com jQuery jQuery3 这个函数的行为就像 document ready 因为它应该 用于包装其
  • 如何更改Windows系统时区?

    我正在编写一个软件 允许更改 Windows 中使用的当前时区参数 到目前为止 我发现的设置系统范围时区的唯一参考是API 或其变体SetDynamicTimeZoneInformation 但我不太确定如何使用它来更改当前时区 例如 需要