怎么转换Windows系统日期格式与区域语言设置教程

千萱君_5123

千萱君_5123

2026-04-05

1036人浏览

原创

改了区域设置后powershell或c#仍显示英文日期,因程序默认继承启动时线程cultureinfo而非实时用户设置;excel text函数受安装语言限制,非系统区域;winforms控件需清缓存并预设线程culture。

windows 系统的日期格式和区域语言设置不是纯界面选项,改了控制面板里的“区域”设置,get-datetostring()、excel 公式、甚至某些.net 应用仍可能不生效——根本原因是 windows 用两套机制管理:用户级区域策略 + 系统级 lcid / unicode 本地化环境,且部分程序会绕过用户设置直接读注册表或继承父进程 culture。

为什么改了“区域设置”后 PowerShell 或 C# 代码还是显示英文日期?

PowerShell 默认使用当前线程的 CultureInfo,而该 culture 在启动时继承自系统默认(非当前用户设置),尤其在非交互式会话(如计划任务、VS Code 终端重启后)容易卡在 en-US。C# 程序若未显式指定 culture,也会 fallback 到 Thread.CurrentThread.CurrentCulture,它不一定同步控制面板改动。

  • 检查当前 culture:[System.Globalization.CultureInfo]::CurrentCulture.Name(PowerShell)
  • 临时覆盖(仅当前会话):[System.Threading.Thread]::CurrentThread.CurrentCulture = [System.Globalization.CultureInfo]::GetCultureInfo("zh-CN")
  • 永久生效需改注册表键 HKEY_CURRENT_USER\Control Panel\International 下的 sShortDatesLongDateLocaleName,并注销重登
  • 注意:.NET 6+ 默认启用 DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false 才支持非 invariant culture,否则强制走英文

如何让 Excel 公式(如 TEXT(NOW(),"yyyy年m月d日"))按中文习惯显示?

Excel 的日期格式字符串解析依赖于工作簿所在系统的 Application.International 设置,而非单元格语言。即使系统设为中文,若 Excel 安装包是英文版,TEXT() 函数仍按英文 culture 解析月份/星期名,导致显示 “January” 而非 “一月”。

  • 验证方式:在 Excel 中输入 =TEXT(TODAY(),"dddd"),看返回英文还是中文
  • 解决路径一(推荐):重装中文语言包版 Excel,或在文件 > 选项 > 语言 中添加并设为“编辑语言”首选项
  • 解决路径二(兼容旧版):避免用 "yyyy年m月d日" 这类含中文字符的格式串,改用 TEXT(NOW(),"yyyy/m/d") + 单元格自定义格式 yyyy"年"m"月"d"日"
  • 关键点:单元格自定义格式(Format Cells → Number → Custom)走的是 OS 区域设置,不受 Excel 安装语言限制

修改注册表后日期控件(如 WinForms DateTimePicker)仍不更新怎么办?

WinForms 的 DateTimePicker 默认使用 Control.DefaultFontCultureInfo.CurrentCulture 渲染,但某些老版本 .NET Framework(如 4.5)存在缓存 bug:即使注册表已改,控件首次加载仍读取旧 LCID,尤其在多显示器或远程桌面环境下更明显。

  • 强制刷新 culture 缓存:System.Globalization.CultureInfo.ClearCachedData()(需在 Application.Run() 前调用)
  • 确保控件初始化前设置线程 culture:Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
  • 注册表必须同时修改两个位置:HKEY_CURRENT_USER\Control Panel\International(用户级)和 HKEY_USERS\.DEFAULT\Control Panel\International(默认用户,影响服务类进程)
  • 改完注册表后,务必执行 control intl.cpl 打开区域设置面板,点一次“其他设置…”再点“确定”——这会触发系统重载所有国际化资源

真正起效的临界点往往不在“改哪里”,而在“谁在读、何时读、从哪读”。比如一个后台服务进程可能永远看不到你刚在控制面板里点的“中文(简体)”,因为它启动时就读了一次注册表,之后就缓存了。别只盯着界面改,得盯住具体程序的加载时机和 culture 继承链。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

2979

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2538

6

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

2023.08.01

1408

3

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2319

5

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.08

3190

4

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

1457

3

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

2023.08.28

2377

4

windows锁屏快捷键
windows锁屏快捷键

windows锁屏快捷键是Windows键+L、Ctrl+Alt+Del、Windows键+D、Windows键+P和Windows键+R。本专题为大家提供windows相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.30

4127

5

Window.setInterval()方法
Window.setInterval()方法

Window.setInterval() 方法的基本语法是“window.setInterval(function, delay)”,function是要重复执行的函数或代码块,delay是每次执行之间的时间间隔,以毫秒为单位。本专题为大家提供Window.setInterval()相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

595

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.1万人学习