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

PowerShell解析Git日期字符串报错,求有效解决方案

解决PowerShell解析Git日期字符串的问题

方案一:修复Git命令,直接输出格式化日期

原脚本报错是因为PowerShell对双引号的解析导致Git收到的格式参数异常。在PowerShell中,只需调整引号的使用方式即可解决:

# 用单引号包裹Git的日期格式字符串
$lastUpdateString = git log -1 --date=format:'%Y/%m/%d %T' --format="%ad"

# 或者转义双引号
$lastUpdateString = git log -1 --date=format:`"%Y/%m/%d %T`" --format="%ad"

执行后$lastUpdateString会直接返回YYYY/MM/DD HH:MM:SS格式的字符串,无需额外解析。

方案二:解析Git返回的原始日期字符串

如果需要处理Git默认返回的原始格式(如Mon May 17 15:53:59 2021 -0400),可采用以下两种方式:

方式1:完整解析含时区的日期

使用匹配原始格式的格式字符串,注意用24小时制标识HH,并包含时区部分zzz:

$rawDate = git log -1 --format="%ad"
$parsedDate = [DateTime]::ParseExact($rawDate, "ddd MMM dd HH:mm:ss yyyy zzz", [System.Globalization.DateTimeFormatInfo]::InvariantInfo)

方式2:去除无关部分后解析

若不需要星期和时区信息,先清理字符串再解析:

$rawDate = git log -1 --format="%ad"
# 移除开头的星期标识和末尾的时区部分
$cleanedDate = $rawDate -replace '^[a-zA-Z]{3} ', '' -replace ' [+-]\d{4}$', ''
# 用24小时制标识HH解析
$parsedDate = [DateTime]::ParseExact($cleanedDate, "MMM dd HH:mm:ss yyyy", [System.Globalization.DateTimeFormatInfo]::InvariantInfo)

你之前解析失败的核心原因是用了12小时制的hh,而原始时间是24小时制的15,换成HH即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:19:53