VBScript - RANDOMIZE(Cbyte(左(右(时间(),5),2)))为ES语言环境抛出500

时间:2017-11-12 01:41:09

标签: vbscript

使用标准的VBScript Randomize语句(如下),大部分时间都可以正常工作。

... RANDOMIZE(Cbyte(左(右(时间(),5),2)))

RANDOMIZE ...

花了一点时间,但在挖掘日志文件时,我注意到它抛出了这500个错误:

类型不匹配:'Cbyte'

当用户的语言是非英语时。

我尝试在测试页面中更改Session.LCID(我正在使用经典ASP)但没有效果。

有关修复或解决方法的任何建议吗?谢谢......

1 个答案:

答案 0 :(得分:3)

您似乎正在尝试根据分钟内的值进行随机化:

12:34:56 AM
      |---|
      56 AM (right(5))
      ||
      56    (left(2))

现在我不知道Time()会在西班牙语语言环境中返回的内容,但它可能类似于12:34:56 de la mañana

知道的是,在全球化的世界中依赖特定的呈现格式是一个坏主意。在您的情况下,它可能涉及尝试将left(right("12:34:56 de la mañana",5),2)"añ"转换为数字值,这是一件令人不满意的事情。

如果您想要进行真正的根本原因分析,我建议您捕获转换错误并实际记录Time()在错误时显示的内容。

如果您只想修复,请找到一种方法来获取不依赖于区域设置的秒数,例如:

secs = Second(Time())
  

顺便说一句,我不确定为什么你认为这甚至是需要的。 VBScript Randomise函数的文档指出,如果未给出参数,系统计时器返回的值将用作新的种子值。因此,它已经基于当前时间。