macOS Ventura虚拟机中PowerShell DateTime年份显示异常求助
解决PowerShell在macOS上DateTime显示波斯历年份的问题
你的问题是因为当前系统区域设置默认使用了波斯历(Solar Hijri Calendar),所以Get-Date返回的年份是波斯历的1403(对应公历2024年)。以下是几种解决方法:
临时修改PowerShell会话的文化设置
在当前PowerShell会话中切换到使用公历的文化,比如中文简体或英文(美国):
# 切换到中文简体文化(使用公历) [System.Threading.Thread]::CurrentThread.CurrentCulture = [System.Globalization.CultureInfo]::GetCultureInfo("zh-CN") [System.Threading.Thread]::CurrentThread.CurrentUICulture = [System.Globalization.CultureInfo]::GetCultureInfo("zh-CN") # 重新获取日期并输出 $myday = Get-Date Write-Host $myday Write-Host $myday.ToString("yyyy-MM-dd HH:mm:ss")
或者使用英文(美国)文化:
[System.Threading.Thread]::CurrentThread.CurrentCulture = [System.Globalization.CultureInfo]::GetCultureInfo("en-US") [System.Threading.Thread]::CurrentThread.CurrentUICulture = [System.Globalization.CultureInfo]::GetCultureInfo("en-US")
该设置仅对当前PowerShell会话有效,关闭窗口后会恢复。
永久修改macOS系统区域设置
通过系统设置彻底更改默认日历为公历:
- 打开「系统设置」→「通用」→「语言与地区」
- 找到「日历」选项,选择「公历」
- 重启PowerShell后,所有会话都会默认使用公历日期。
格式化时指定使用公历
如果不想修改系统或会话的文化设置,可以在ToString方法中直接指定使用公历的格式提供器:
$myday = Get-Date # 直接指定英文(美国)文化(默认使用公历)进行格式化 Write-Host $myday.ToString("yyyy-MM-dd HH:mm:ss", [System.Globalization.CultureInfo]::GetCultureInfo("en-US"))
内容的提问来源于stack exchange,提问作者user1389406
相关产品推荐
相关产品推荐

