VB - 在不同机器上使用字符串-日期连接的不同结果

VB - Different Results With String-Date Concatenation On Different Machines

提问人:Snake_Plissken 提问时间:6/16/2023 更新时间:6/16/2023 访问量:65

问:

我和我的同事在调试一个问题时遇到了一些奇怪的问题:同一部分 VB 代码在我的机器上产生的输出与他的机器不同。我们无法弄清楚为什么。

代码:

Dim textForMatching = unmatchedRecord.MetaDataString + " - " + unmatchedEvent.StartDate?.ToLocalTime().Date

在我的机器上,输出是这样的,而在他的机器上,输出是 。我的日期输出中的那个领先者在他的日期输出中缺失了。10d775fff794 - 06/15/202310d775fff794 - 6/15/20230

我们位于同一时区,并且都使用相同版本的 Visual Studio。

有谁知道为什么会这样?这是由于使用运算符隐式转换为字符串而导致的一些本地化相互作用吗?或者我们的计算机上是否有可能略有不同并导致这种情况的设置?+

Visual-Studio 日期 串联 vb.net 字符串

评论

0赞 djv 6/16/2023
为什么要在字符串中添加 () 日期?+
0赞 djv 6/16/2023
用于字符串连接,但即便如此,您也应该调用 或插值 ,这将在日期调用。我不知道从日期到字符串的隐式转换会做什么,最好不要让它碰运气。&...Date.ToString(*format?*)Dim textForMatching = $"{unmatchedRecord.MetaDataString} - {unmatchedEvent.StartDate?.ToLocalTime().Date}"ToString()
0赞 Snake_Plissken 6/16/2023
嗨@djv是的,最初以这种方式完成并不理想:/
0赞 jmcilhinney 6/16/2023
如果您要使用字符串插值,如上所述,那么您可以指定日期和数字的格式,就像调用 时一样,例如 .String.FormatConsole.WriteLine($"The date is {Date.Now:d/MM/yyyy}")
0赞 Andrew Morton 6/16/2023
如果要确保格式为该格式,请始终指定该格式,因此 .此外,VB.NET 中的字符串连接运算符是 ,而不是 。unmatchedEvent.StartDate?.ToLocalTime().ToString("MM/dd/yyyy")&+

答:

2赞 Michael Foster 6/16/2023 #1

检查注册表:sShortDate 设置。每台机器都不同吗?HKEY_CURRENT_USER\Control Panel\International

我相信这就是它确定要使用的日期格式的方式。

1赞 Gustav 6/16/2023 #2

您应该研究文档

然后你会发现:

请注意,确切的输出取决于当前区域性和 运行它的系统的本地时区。

因此,原因是您对日期和时间使用了不同的 Windows 设置。