0

下面是VBScript的代码,

FromDate=22/2/2013
ToDate=  1/3/2013
StartDateSerial = DateSerial(year(FromDate),month(FromDate), day(FromDate))
ToDateSerial = DateSerial(year(ToDate),month(toDate),day(ToDate))

此日期格式为 dd/mm/yyyy。但 DateSerial 的结果如下

StartDateSerial= 2/22/2013
ToDateSerieal= 1/3/2013

这意味着对于开始日期它转换为mm/dd/yyyy但对于 ToDateSerieal 它转换为dd/mm/yyyy

我在US lacal上发现了这个问题。但在英国当地,这对两者都是一样的。

现在,当我尝试使用 FromDate 和 To Date 中的以下值时

FromDate=2/22/2013
ToDate=  3/1/2013

我将 FromDate 和 ToDate 从 JavaScript 传递到 vbscript。

格式为 mm/dd/yyyy,然后它在美国 lacal 上运行良好,但在英国本地上运行良好。任何人都可以告诉我如何解决这个问题。

4

2 回答 2

2

我假设,您将 d/m/y 字符串从 Javascript 传递到使用美国语言环境运行的 VBScript,该语言环境需要 m/d/y 日期字符串。如果出现错误的日期字符串,VBScript 会尝试做正确的事情并将“22/2/2013”​​转换为 2 月日期;“2013 年 1 月 3 日”被视为有效的 1 月日期。英国语言环境理解 d/m/y 字符串,“2013 年 1 月 3 日”是 3 月日期。

为了解决您的问题 - 所有语言环境的 d/m/y 日期字符串输入 -a = Split("d/m/y", "/")在字符串和DateSerial(a[2], a[1], a[0]).

于 2013-03-01T11:59:10.190 回答
1

为确保您使用正确的语言环境,您可以使用SetLocale设置语言环境。dd/mm/yyyy你可以使用,2057语言English UK环境。

cl = GetLocale()

SetLocale(1033) ' US locale
wscript.echo FormatDateTime("1/3/2013",1)

SetLocale(2057) ' UK locale
wscript.echo FormatDateTime("1/3/2013",1)

' Set back the original locale
SetLocale(cl)

' Output:
' Thursday, January 03, 2013
' 01 March 2013
于 2013-03-01T13:32:51.593 回答