2017-04-25 49 views
4

Screenshot为什么powershell坚持18小于9?

为什么会出现这种情况? (Get-Date设置为18现在...) 这可能是Get-Date格式化数字的方式吗? 我很难过....

+1

我不知道powershell,但看起来它是在做一个字符串比较,而不是数字比较。 –

回答

5

Get-Date -Format返回一个字符串。

这意味着你用9

-lt运营商将(就像在PowerShell中的任何其他比较操作),在看到一个字符串作为左手比较2个字母串“18”论点,试图将右手参数转换为字符串一样,所以比较有效的是:

"18" -lt "9" 

由于“1”来之前,“9”的字母意义上说,比较返回$true

7

由于一些已经说过,你在做字符串比较,而不是数比较

$Time = Get-Date -Format %H 
$Time.GetType() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String         System.Object 

为了做到你想要什么,你可以投你$Time多项

[int]$Time -lt 9 
#or with a little trick 
+$Time -lt 9 
+0

这让人感觉很棒!!!!!感谢大家!!!! –