将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")
答
要分析你的约会,你可以使用:
$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
}
感谢你的想法。由于时间戳不是美国格式,我不得不在文化方面玩一下,以下内容完成了我所寻找的内容。你指出我在文化方向上的正确答案! '$ 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