特定格式的今天和昨天零点的日期。

5
我需要以以下格式获取今天和昨天午夜的日期:
08/05/2018 00:00
我能得到的最好结果似乎是这样的:
get-date -Uformat "%D %R" -Hour 0 -Minute 00

08/05/18 00:00

在尝试获取昨天午夜时间时,我失败了。

(Get-Date -UFormat "%s" -Hour 0 -Minute 00 -Second 00).AddDays(-1)

由于[System.String]不包含名为AddDays的方法,所以方法调用失败。 在第1行字符:1处: + (Get-Date -UFormat“%s”-Hour 0 -Minute 00 -Second 00).AddDays(-1) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:MethodNotFound
5个回答

5
要在午夜获取日期(时间),您可以使用以下方式:
(Get-Date).Date

或者

[datetime]::Today

如果当前的日期格式有不同的分隔符(就像这里一样),根据您的要求进行格式化可能会很棘手。

> (get-date).Date.ToString('MM/dd/yyyy HH:mm')
08-05-2018 00:00
.ToString() 方法覆盖了分隔符; 若要直接使用反斜线,请在其前面加上一个反斜线进行转义:
> (get-date).Date.ToString('MM\/dd\/yyyy HH:mm')
08/05/2018 00:00

或者使用:
> (get-date).Date.ToString('MM/dd/yyyy HH:mm', [cultureinfo]::InvariantCulture)
08/05/2018 00:00

3

代码

(Get-Date).ToString("dd/MM/yyyy 00:00")
(Get-Date).AddDays(-1).ToString("dd/MM/yyyy 00:00")

在日期仍然是日期(而不是看起来像日期的字符串)时,您必须对日期执行AddDays操作。

结果

05/08/2018 00:00
04/08/2018 00:00

对于美国格式

dd/MM/yyyy 简单地变成了 MM/dd/yyyy


1
今天使用 [DateTime]::Today 并用 ToString() 格式化它。
[Datetime]::Today.ToString("dd/MM/yyyy HH:mm")

对于昨天,只需添加AddDays(-1)
[Datetime]::Today.AddDays(-1).ToString("dd/MM/yyyy HH:mm")

0

你在使用-UFormat选项方面是正确的:

Get-Date -Hour 0 -Minute 00 -UFormat "%m/%d/%Y %H:%M"

这将产生以下输出:

08/05/2018 00:00

你看到的错误是因为你在一个字符串上调用了 AddDays 方法。要操作日期,你可以按照以下步骤进行:
(Get-Date -Hour 0 -Minute 00).AddDays(-1) | Get-Date -UFormat "%m/%d/%Y %H:%M"

这将产生所需的输出。


0
(Get-Date).AddDays(-1)|Get-Date -format "yyyyMMdd"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接