为什么powershell坚持18小于9?

时间:2017-04-25 23:02:54

标签: powershell

Screenshot

为什么这是真的? (获取日期现在设置为18 ...) 这可能是Get-Date格式化数字的方式吗? 我很难过......

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

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

这意味着你要将2个字母字符串“18”与9进行比较。

-lt运算符(就像PowerShell中的任何其他比较运算符一样),在将字符串视为左手参数时,尝试将右侧参数转换为字符串,因此比较是有效:

"18" -lt "9"

由于“1”在字母意义上位于“9”之前,因此比较返回$true