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

如何为PowerShell自定义对象返回的属性值设置日期格式

问题原因

你从文件元数据中读取的Date taken(拍摄日期)字符串肉眼显示正常,但其中隐含了EXIF字段自带的不可见Unicode控制字符(如文本方向标记),实际内容和显示内容不一致,因此无法被Get-Date直接识别为合法的日期格式,触发报错。

修复方案

先对读取到的日期字符串做清理,移除所有非日期相关的特殊字符后再执行格式化即可,可直接使用如下代码:

# 测试用代码
$SpecifiedSelectObj = $Metadata | Select-Object -Property 'Date taken' | ForEach-Object {
    # 清理日期字符串:移除所有数字、/、:、空格、am/pm之外的字符
    $cleanDateStr = $_."Date taken" -replace '[^\d/: apm]', ''
    # 执行日期格式化,输出你需要的格式
    Get-Date $cleanDateStr -Format 'yyyy-MM-dd hh:mm tt'
}

可选适配方案

如果清理后仍存在解析报错,可手动指定和日期格式匹配的区域设置,你示例中的日期为月/日/年格式,对应美国英语区域,修改为如下代码即可:

$SpecifiedSelectObj = $Metadata | Select-Object -Property 'Date taken' | ForEach-Object {
    $cleanDateStr = $_."Date taken" -replace '[^\d/: apm]', ''
    # 手动指定匹配的区域和日期格式,避免系统区域差异导致的解析失败
    $culture = [Globalization.CultureInfo]::GetCultureInfo('en-US')
    $dateObj = [DateTime]::ParseExact($cleanDateStr, 'MM/dd/yyyy h:mm tt', $culture)
    $dateObj | Get-Date -Format 'yyyy-MM-dd hh:mm tt'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:57:02