提问人:MattMS 提问时间:11/14/2023 更新时间:11/14/2023 访问量:52
如何在 Powershell 中修复日期格式以使用 ISO 8601
How do I fix the date format In Powershell to use ISO 8601
问:
我想将 Powershell 中日期和时间的默认格式更改为使用 ISO 8601 格式,
因此,它不会显示为 ,而是使用dd/mm/yyyy
yyyy-mm-dd
请注意:我不想直接在日期对象上指定任何内容, 因为当返回的对象上有一个日期字段时,这会很烦人。 我想更改将在任何地方使用的默认格式。
Windows ISO 8601 时间戳没有回答这个问题 那里的答案都涉及直接处理 DateTime 对象。
# NOT THIS
Get-Date -Format 'yyyy-mm-dd'
# NOR THIS
$d = Get-Date
$d.ToString('o')
该解决方案必须适用于 Powershell 7 及更高版本。
我进行了以下尝试,但它们都会导致显示的错误。
设置失败DateTimeFormat
(Get-Culture).DateTimeFormat = [cultureinfo]::InvariantCulture.DateTimeFormat
输出:
SetValueInvocationException: Exception setting "DateTimeFormat": "Instance is read-only."
调用失败Set-Culture
Set-Culture [cultureinfo]::InvariantCulture
输出:
Set-Culture: Cannot bind parameter 'CultureInfo'. Cannot convert value "[cultureinfo]::InvariantCulture" to type "System.Globalization.CultureInfo". Error: "Culture is not supported. (Parameter 'name')
[cultureinfo]::InvariantCulture is an invalid culture identifier."
答:
2赞
Thomas
11/14/2023
#1
(PowerShell 7.3.9)
我的解决方案是更改 DateTimeFormat
的 and。LongDatePattern
LongTimePattern
function Switch-DefaultTimeFormat(){
$currentThread = [System.Threading.Thread]::CurrentThread
$culture = [CultureInfo]::InvariantCulture.Clone()
#see https://learn.microsoft.com/en-us/dotnet/api/system.globalization.datetimeformatinfo?view=net-7.0
$culture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd"
$culture.DateTimeFormat.LongTimePattern = "HH:mm:ss.fff"
$currentThread.CurrentCulture = $culture
$currentThread.CurrentUICulture = $culture
}
调用此函数以应用新的默认日期格式。 从配置文件脚本中调用函数以“使其成为默认值”。
看看是否有帮助!
测试和输出:
PS D:\> Get-Date
Tuesday, 14 November 2023 3:38:17 pm
PS D:\> Switch-DefaultTimeFormat
PS D:\> Get-Date
2023-11-14 15:38:17.838
评论
0赞
MattMS
11/15/2023
工作完美(也在 7.3.9 中),TIL 动词。感觉功能内容将是我的个人资料的一个很好的补充。Switch
上一个:缺少带有主调度程序的模块
评论