【问题标题】:Date / Time won't format correctly in Powershell日期/时间在 Powershell 中的格式不正确
【发布时间】:2016-02-04 23:21:54
【问题描述】:

我在我的 power shell 脚本中将日期转换为 02/04/2016 时遇到问题,它正在查找 McAfee 的 DAT 文件的创建时间。出于某种原因,它输出 02/03/2016 00:00:00,谁能告诉我为什么要添加 00:00:00?这是我目前所拥有的:

$mcafee = Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\McAfee\AVEngine
$mcafee.AvDatDate
$datfile=[datetime]$mcafee.AvDatDate

$datfile.adddays(-3)
$threedaysbefore = $datfile.adddays(-3)

$WPFMcAfeeField.Text = $datfile

$datfile.adddays(-3)
$threedaysbefore = $datfile.adddays(-3)


$WPFMcAfeeField.Text = $datfile

所以我真正的问题是,我如何将这个语句作为一个整体编辑到它在字段中输出的位置:02/03/2016?我已经尝试了我能想到的一切。我需要重新格式化吗?

【问题讨论】:

标签: powershell


【解决方案1】:

使用[datetime]$mcafee.AvDatDate,您将转换为[datetime] 对象。您看到的值与$datfile 相同。它将包含日期和时间。由于您没有提供值,因此默认为午夜。

如果您只想使用日期,那么您可以使用各种方法来返回该数据。一个简单的例子是ToString() 方法。给它一个date time format,它会返回匹配的字符串。

PS C:\temp> $datfile.ToString("MM/dd/yyyy",[cultureinfo]::InvariantCulture)
02/04/2016

设置区域性设置对于确保从字符串中获得预期结果很重要。在上述情况下,要确保您的区域设置确实会干扰输出或所谓的文化不敏感。

【讨论】:

  • 对我来说,您的代码返回 02.04.2016。应该是.ToString("MM'/'dd'/'yyyy").ToString("MM/dd/yyyy",[cultureinfo]::InvariantCulture)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多