将dd MMM yyyy转换为unix时间

时间:2016-11-24 21:25:37

标签: powershell powershell-v3.0

我有一个字符串,我从dd MMM yyyy格式的文件中提取,我想将其转换为unixtime进行监控。

举个例子:

19 Jul 2017

我想显示为:

1500422400

根据一些搜索我正在尝试以下内容:

$dateValue = "19 Jul 2017"
$date1 = Get-Date -Date "01/01/1970"
$date2 = Get-Date -Date $dateValue
$unixtime = Get-Date (New-TimeSpan -Start $date1 -End $date2).TotalSeconds

我收到以下错误:

  

Get-Date:无法绑定参数'Date'。无法转换价值   “1530662400”键入“System.DateTime”。错误:“字符串不是   被识别为有效的DateTime。“在D:\ cppib \ bin \ snlStatus.ps1:19   焦炭:22   + $ unixtime = Get-Date(New-TimeSpan -Start $ date1 -End $ date2).TotalSeconds   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~       + CategoryInfo:InvalidArgument:(:) [Get-Date],ParameterBindingException       + FullyQualifiedErrorId:CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommand

2 个答案:

答案 0 :(得分:2)

删除列表行中的Get-Date,因为它试图将Timespan的总秒数转换为DateTime

$dateValue = "19 Jul 2017"
$unixtime = ((Get-Date $dateValue)-(Get-Date "01 JAN 1970")).TotalSeconds
Write-Host $unixtime

进一步检查发现了这个

$dateValue = "19 Jul 2017"
$unixtime = Get-Date $dateValue -UFormat %s
Write-Host $unixtime

返回同样的东西。

来源:Get-Date

答案 1 :(得分:1)

$unixstart = Get-Date -Date "01/01/1970"
$date2 = Get-Date $dateValue

$unixtime = (New-TimeSpan -Start $unixstart -End $date2).TotalSeconds

Write-Host $unixtime