2013-02-19 39 views
0

我试图让年龄,几个月,几天,几小时,几分钟和几秒钟的人年龄。Powershell - 获得一个人的年龄

这是我走到这一步,(你可以告诉我是一个总的PowerShell的初学者):

$now = [datetime]::now 
[datetime]$birthday = "12/22/2012 03:22:00" 
$age = [datetime]$now - $birthday 

Write-Host "My daughter's age is:" $age.Days "days" ($age.Hours) "hours" ($age.Minutes) "minutes" ($age.Milliseconds) "seconds" 

输出是:

My daughter's age is: 59 days 10 hours 27 minutes 76 seconds 

这是确定的,但它会更真棒有输出更'人类可读':

1 Month 19 Days 10 hours 28 minutes 16 seconds 

这实际上比我最初预期的方式更困难。代码必须知道每个月有多少天才能将日期分为几个月和几天。并且还认为今年是闰年!

也许PowerShell可以帮助它的一些神奇!

谢谢!

回答

0

我相信这是你所追求的。

[datetime]$birthday = "12/22/2012 03:22:00" 
$span = [datetime]::Now - $birthday 
$age = New-Object DateTime -ArgumentList $Span.Ticks 

Write-Host "My daughter's age is:" $($age.Year -1) Years $($age.Month -1) Months $age.Day "days" ($age.Hour) "hours" ($age.Minute) "minutes" ($age.second) "seconds" 
+0

看起来更好,但你的日期“2012年12月22日三时27分00秒”是代码的输出“我女儿的年龄是:3个月1天11小时8分21秒“,我很确定我的女儿小于2个月:-) – RafaelGP 2013-02-19 14:38:10

+0

我会看看,我认为这是因为[日期时间] :: MinValue – 2013-02-19 14:40:44

+0

看看更新代码 – 2013-02-19 14:56:32

0

在生日后的第二天检查它。有1天多!

正确的是:

[datetime]$birthday = "12/22/2012 03:22:00" 
$span = [datetime]::Now - $birthday 
$age = New-Object DateTime -ArgumentList $Span.Ticks 

Write-Host "My daughter's age is:" $($age.Year-1) Years $($age.Month-1) Months ($age.Day-1) "days" ($age.Hour) "hours" ($age.Minute) "minutes" ($age.second) "seconds"