我在Classic ASP(VBScript)中遇到了这种非常奇怪的行为。
我具有以下功能,该功能可将日期输入字符串转换为特定格式,具体取决于当前设置的语言环境。 DAYSTART和DAYEND应该始终将给定日期转换为美国时间格式的字符串,因为它主要用于数据库查询。
Function Date(DateInput,DateFormat)
LocaleIDOrig = GetLocale
'-> set locale id
Select Case LocaleID
Case "1031" : SetLocale(1031)
Case Else : SetLocale(1033)
End Select
'-> database date conversions
Select Case DateFormat
Case "DAYSTART","DAYEND","FIRSTOFMONTH","ENDOFMONTH"
DateInput = month(DateInput) &"/"& day(DateInput) &"/"& year(DateInput) &" "& hour(DateInput) &":"& minute(DateInput) &":"& second(DateInput)
'-> set locale
SetLocale(1033)
End Select
Select case DateFormat
Case "DAYSTART" : GetDate = formatdatetime(DateInput,2) &" 00:00:00 AM"
Case "DAYEND" : GetDate = formatdatetime(DateInput,2) &" 11:59:59 PM"
Case Else : GetDate = DateInput
End Select
End Function
假设我从请求字符串中收到一个有效日期,该日期为: 2018-11-10 。 LocaleID和GetLocale为 1031 。我这样格式化
DateString = request("eventdate")
response.write "DateString: " & DateString& "<br>"
DateStart = Date(DateString,"DAYSTART")
response.write "DateString: " & DateString& "<br>"
DateEnd = Date(DateString,"DAYEND")
response.write "DateString: " & DateString& "<br>"
当我这样称呼时,输出为:
DateString: 2018-11-10 00:00:00
DateString: 11/10/2018 0:0:0
DateString: 10/11/2018 0:0:0
DateString 被 Date 函数覆盖,即使它没有主动更改它。这样,每次调用我都会得到不同的结果。
有什么办法可以防止这种情况发生吗?
谢谢。