今天和昨天的午夜日期采用特定格式

时间:2018-08-05 19:00:41

标签: powershell date

我需要以以下格式获取今天和昨天的午夜日期:

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行:char:1   +(获取日期-UFormat“%s”-小时0-分钟00-秒00).AddDays(-1)   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(:) [],RuntimeException       + FullyQualifiedErrorId:MethodNotFound

5 个答案:

答案 0 :(得分:2)

要获取午夜的日期(时间),您可以使用:

(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

答案 1 :(得分:1)

今天使用[DateTime]::Today并用ToString()格式化

[Datetime]::Today.ToString("dd/MM/yyyy HH:mm")

昨天,只需添加AddDays(-1)

[Datetime]::Today.AddDays(-1).ToString("dd/MM/yyyy HH:mm")

答案 2 :(得分:0)

代码

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

您必须在仍为日期(而不是看起来像日期的字符串)中执行AddDays date

结果

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

对于 American 格式

dd/MM/yyyy变成MM/dd/yyyy

答案 3 :(得分: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"

这将产生所需的输出。

答案 4 :(得分:0)

(Get-Date).AddDays(-1)|Get-Date -format "yyyyMMdd"
相关问题