Powershell在.AddDays()方法之后设置日期格式



使用.AddDays()后,我找不到格式化日期的方法

代码

[datetime] $searchDate = '2020-01-10'
$searchDate = '{0:yyyy-MM-dd}' -f $searchDate.AddDays(1)

返回";2020年1月11日星期六凌晨12:00:00;而我正在寻找2020-01-11

tl;dr

# NOTE: [datetime] must be on the RHS if you want to assign a different type later.
$searchDate = [datetime] '2020-01-10'
$searchDate = '{0:yyyy-MM-dd}' -f $searchDate.AddDays(1)

当然,你可以把它合并成一个单独的任务:

$searchDate = '{0:yyyy-MM-dd}' -f ([datetime] '2020-01-10').AddDays(1)

或者,通过Get-Date:

$searchDate = Get-Date ([datetime] '2020-01-10').AddDays(1) -Format yyyy-MM-dd

您自己的解决方案只是绕过代码的概念问题,Jeroen Mostert在对该问题的评论中很好地描述了这一点。

[datetime] $searchDate = '2020-01-10'

通过将强制转换([datetime](放置在赋值中变量($searchDate(的左侧,可以类型约束

这意味着以后分配给的任何值都会被始终隐式强制(转换(为指定的类型(在这种情况下为[datetime](。

因此,您不能使用相同的变量来分配通过-f运算符获得的日期的字符串表示,因为该字符串表示会自动重新转换为[datetime]。也就是说,在执行
$searchDate = '{0:yyyy-MM-dd}' -f $searchDate.AddDays(1)之后,$searchData再次包含[datetime]实例,而不是感兴趣的字符串。

另一种解决方案是简单地分配给不同的变量,该变量要么不受类型约束,要么受[string]约束。

Get-Date $searchDate -Format yyyy-MM-dd求解

最新更新