为什么powershell坚持18小于9?

Joh*_*ler 4 powershell

截图

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

Som*_*ica 7

正如一些人已经说过的那样,你正在进行字符串比较而不是数字比较

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

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
Run Code Online (Sandbox Code Playgroud)

为了做你想做的事,你可以把你$Time的数字转换成数字

[int]$Time -lt 9 
#or with a little trick 
+$Time -lt 9
Run Code Online (Sandbox Code Playgroud)


Mat*_*sen 5

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

这意味着你要将2个字母的字符串 "18"与9进行比较.

-lt运营商将(就像在PowerShell中的任何其他比较操作),在看到一个字符串作为左边参数,试图右手参数转换为字符串为好,因此比较有效:

"18" -lt "9"
Run Code Online (Sandbox Code Playgroud)

由于"1"在字母意义上出现在"9"之前,因此比较返回 $true