如何使用不同本地的vbscript的月份函数

How to work with month function of vbscript with different local

本文关键字:vbscript 函数 何使用      更新时间:2023-09-26

下面是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。但是dateseries的结果如下

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

表示开始日期转换为mm/dd/yyyy但是ToDateSerieal转换为dd/mm/yyyy

我在US local 上发现了这个问题。但在UK local,这对两者都是相同的。

现在,当我尝试在FromDate和To Date

中使用以下值时
FromDate=2/22/2013
ToDate=  3/1/2013

我正在传递FromDate和ToDate从JavaScript到vbscript。

格式是mm/dd/yyyy,那么它在美国本地工作得很好,但在英国本地不行。谁能告诉我怎样才能解决这个问题?

我假设,您将d/m/y字符串从Javascript传递到使用美国语言环境运行的VBScript,该语言环境期望m/d/y日期字符串。如果给出一个错误的日期字符串,VBScript尝试做正确的事情并将"22/2/2013"转换为二月的日期;"1/3/2013"被视为1月份的有效日期。英国地区可以理解d/m/y字符串,"1/3/2013"是三月日期。

要解决您的问题- d/m/y日期字符串输入所有地区-在字符串上使用a = Split("d/m/y", "/")DateSerial(a[2], a[1], a[0])

为了确保您正在使用正确的区域设置,您可以使用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