2013-03-14 65 views
1

我有一個CSV文件,其中包含DD.MM.YYYY中的時間戳HH:MM 24小時格式,我需要在Month DD中添加48小時並返回DD ,YYYY HH:Powershell中的MM格式。將48小時添加到CSV文件中的時間戳

因此2013年3月15日23:12將返回2013年3月15日23:12或14.03.2013 10:00將返回2013年3月16日10:00。

我使用

$newDate = [DateTime]::$_.Timestamp.AddHours(48)

嘗試,但PowerShell會告訴我 - 「你不能叫一個空值表達式的方法。」

回答

1

如果日期格式相匹配的文化設置,那麼你應該能夠使用Get-日期解析日期字符串:

$date = Get-Date '13.03.2013 23:12' 

如果不是這樣,你就需要使用ParseExact方法:

$date = [DateTime]::ParseExact('13.03.2013 23:12','dd.MM.yyyy HH:mm',$null) 

現在,你可以添加48小時,然後爲你想格式化:

$date.AddHours(48).ToString('dd, yyyy HH:mm') 

從@gjettison評論

時間戳是不是在美國的格式更新,我不得不玩的文化一點點以下完成了我一直在尋找

$stampCulture = [Globalization.cultureinfo]::GetCultureInfo("en-GB") 
$timeStamp = [datetime]::Parse($_.Timestamp, $stampCulture) 
$expire = $timeStamp.AddHours(48).ToString("MMMM dd, yyyy HH:MM") 
+0

感謝你的想法。由於時間戳不是美國格式,我不得不在文化方面玩一下,以下內容完成了我所尋找的內容。你指出我在文化方向上的正確答案! '$ stampCulture = [Globalization.cultureinfo] :: GetCultureInfo(「en-GB」) $ timeStamp = [datetime] :: Parse($ _。Timestamp,$ stampCulture) $ expire = $ timeStamp.AddHours(48)。 ToString(「MMMM dd,yyyy HH:MM」)' – gjettison 2013-03-14 16:19:54

1

要分析你的約會,你可以使用:

$a = [datetime]::parse("13.03.2013 23:12") 

所以以下工作:

$b = $a.AddHours(48) 

您可以使用格式化:

$b.ToString("MMMM dd, yyyy HH:MM:ss") 
0

檢查的價值$_.Timestamp,然後再根據消息提示添加小時空值。

如果存在不包含日期的值的可能性,則可以使用TryParse。

[string]$originalString = "25.12.2013 18:00" 
[DateTime]$originalDate = Get-Date 

if ([DateTime]::TryParse($originalString, [ref]$originalDate)) 
{ 

    Write-Host "got date: $originalDate" -ForegroundColor Green 
    Write-Host "plus 48 hours:" $originalDate.AddHours(48) -ForegroundColor Green 
} 
else 
{ 
    Write-Host "error" -ForegroundColor Red 
}