将48小时添加到CSV文件中的时间戳

问题描述:

我有一个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会告诉我 - “你不能叫一个空值表达式的方法。”

如果日期格式相匹配的文化设置,那么你应该能够使用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

要分析你的约会,你可以使用:

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

所以以下工作:

$b = $a.AddHours(48) 

您可以使用格式化:

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

检查的价值$_.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 
}