You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中基于区域文化的时间变量格式化问题求助

解决PowerShell中基于区域文化格式化时间变量的问题

首先得点出你代码里的核心问题:-f格式化运算符不能直接用DateTimeFormat里的自定义格式字符串,而且你用-f的顺序也搞反了——-f是格式字符串在前、要格式化的对象在后,但就算顺序对了,它也不识别FullDateTimePattern这种自定义格式,这就是为什么后两个输出都是默认格式的原因。

正确的实现方式:用DateTime.ToString()方法

要基于区域文化格式化时间变量,应该用.NET DateTime对象的ToString()方法,它支持两种常用场景:

  1. 传入指定区域的CultureInfo,直接使用该区域的默认格式
  2. 传入从DateTimeFormat获取的自定义格式字符串,再结合指定文化(可选)

示例1:使用当前文化的FullDateTimePattern

$time = Get-Date
# 获取当前文化的完整日期时间格式
$pattern = (Get-Culture).DateTimeFormat.FullDateTimePattern
# 用ToString方法格式化
$formattedTime = $time.ToString($pattern)
Write-Host $formattedTime

示例2:用法语(fr-FR)文化的FullDateTimePattern

$time = Get-Date
$culture = New-Object System.Globalization.CultureInfo('fr-FR')
# 方式1:获取法语文化的完整日期时间格式后格式化
$pattern = $culture.DateTimeFormat.FullDateTimePattern
$formattedTime = $time.ToString($pattern, $culture)

# 方式2:用标准格式符更简洁('F'对应FullDateTimePattern)
$formattedTime = $time.ToString('F', $culture)
Write-Host $formattedTime

这里补充下:.NET有标准格式符,比如'F'对应FullDateTimePattern,'D'对应LongDatePattern,'T'对应LongTimePattern,用这些符的话代码会更简洁。

关于你后来尝试的代码错误

你之前写的longDateTimePattern是不存在的属性,正确的属性名是FullDateTimePattern(完整日期时间)、LongDatePattern(长日期)、LongTimePattern(长时间)这类,注意属性名是PascalCase(首字母大写),不过PowerShell对大小写不敏感,但最好和.NET属性名保持一致避免混淆。

对用户提供的模式名称进行校验

如果模式名是用户输入的,你需要先校验它是不是DateTimeFormatInfo里的有效属性,比如可以这样做:

function Test-DateTimePattern {
    param(
        [string]$PatternName
    )
    # 获取DateTimeFormatInfo中所有格式相关的字符串属性
    $validPatterns = (Get-Culture).DateTimeFormat | Get-Member -MemberType Property | 
        Where-Object { $_.Definition -match 'string' -and $_.Name -like '*Pattern' } | 
        Select-Object -ExpandProperty Name
    return $PatternName -in $validPatterns
}

# 测试示例
Test-DateTimePattern -PatternName 'FullDateTimePattern' # 返回True
Test-DateTimePattern -PatternName 'longDateTimePattern' # 返回False

这样就能提前判断用户输入的模式名是否有效,避免出现属性不存在的错误。

按照上面的方法修改后,你就能得到期望的输出:

July 9, 2019 11:26:46 AM
July 9, 2019 11:26:46 AM
mardi 9 juillet 2019 11:26:46

内容的提问来源于stack exchange,提问作者Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:15:24