Я испытываю это очень странное поведение в Классическом ASP (VBScript).
У меня есть следующая функция, которая преобразует строку ввода даты в определенный формат, в зависимости от установленного в настоящее время localeid.
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 , даже если она активно не изменяет ее. Таким образом, я получаю разные результаты для каждого звонка.
Можно ли как-нибудь предотвратить это?
Спасибо.