两个相同的字符串“不相等”。为什么?

问题描述 投票:0回答:2

我想弄清楚为什么这两个字符串不相等。我应该使用更好的运算符吗?

$lastupdated = 调用-webrequest -uri $source |外链-Stream |选择最后修改的字符串

$storeddate = 获取内容 C:\windows ile.txt

powershell logic
2个回答
0
投票

我在将字符串保存到文件时添加了 .ToString() ,现在我的操作员似乎正在工作。

$lastupdated.ToString() | out-file c:\windows\file.txt

0
投票
$lastupdated -ne $storeddayed
True

确实意味着值不相同,即使它们的基本属性(显示值)看起来相同。

PowerShell 是一种 松散类型的编程,它可以让您“方便地”比较不同类型的两个值。试试这个:

$lastupdated.GetType()
$storeddayed.GetType()

我怀疑

$storeddayed
变量实际上是一个字符串,因为名称暗示它在存储时可能已经丢失了它的
datatime
结构
因为它已经 converted automaticaly 或“手动”为你用ToString()方法做你的
answer

如果比较两种不同类型的对象。 RHS 处的对象(右侧)指示比较的对话(这对任何其他操作员也很重要)。
这意味着您可能只是交换操作中的操作符以获得您期望的结果:

$storeddayed -ne $lastupdated

还要注意,如果操作符(

$storeddayed
$lastupdated
)是 datetime 结构的
both
,则不是所有详细的[属性](https://learn.microsoft.com/dotnet/api/ system.datetime#properties] 默认显示(考虑时区信息,例如
millisecond
属性)。

换句话说,如果你一次性给出命令:

$lastupdated = Get-Date()
$storeddayed = Get-Date()

它们可能看起来与您显示的一样(作为字符串),但实际上它们在时间上有所不同:

$lastupdated.Millisecond
$storeddayed.Millisecond
© www.soinside.com 2019 - 2024. All rights reserved.