2013-11-20 3 views
1

Все, что я хочу сделать, это формат даты в формате mm/dd/yyyy с использованием функции DateAdd. У меня есть этот код, который вычитает дни в переменную сеанса «LastBusinessDate», чтобы они выглядели так, как значения были из предыдущих дней, а не статические даты.Форматирование даты в Javascript/классическом ASP с использованием DateAdd()

DataArray[0] = new Array("<%=DateAdd("d",-1,Session("LastBusinessDate"))%>","Test Test","001","PRO000002",1); 

проблема это будет возвращать в формате м/д/гггг, если сеанс («LastBusinessDate») значение одной цифры, такие как 4/1/2013, когда я хочу, возвращается как 04/01/2013. Я попытался с помощью

DateFormat(DateAdd("d",-1,Session("LastBusinessDate")),"mm/dd/yyyy") 

, а также

DateAdd("d",-1,DateFormat(Session("LastBusinessDate"),"mm/dd/yyyy")) 

, а также создание функции, просто проходя от количества дней вычесть из даты и возвращение новой даты отформатированной, но это не работайте.

function formatBizDate(byDays){ 
    var byDays = byDays; 
    var dateChange = Session("LastBusinessDate"); 
    dateChange = dateFormat(dateChange,"mm/dd/yyyy"); 
    dateChange = DateAdd("d",byDays,dateChange); 
    return dateChange; 
} 

не знаю, куда идти отсюда.

+1

Вам нужно прописное слово 'ММ' в вашем f строка ormat: 'MM/dd/yyyy'. –

+0

Хороший улов, это любительская ошибка с моей стороны, но переключение mm для MM во всех сценариях выше все еще ошибок и не возвращает значение для меня –

+0

Какая новая ошибка? –

ответ

1

Дата VBScript форматная функция - FormatDateTime (не «DateFormat»), но она очень ограничена: она вернет только один из четырех системных форматов, а два из них относятся к временам, а не к датам. Ни один из форматов не будет добавлять главные нули, если это не так, как настроены ваши системные форматы даты.

Не совсем ясно, пытаетесь ли вы сделать это форматирование на стороне сервера (то есть с VBScript) или на стороне клиента (т. Е. С помощью JavaScript). Я не могу помочь вам с последним, но для первых, я хотел бы предложить что-то вроде:

Function DateFormat(d) 
    If IsDate(d) Then 
    DateFormat = Right(100+Month(d),2) &"/"& Right(100+Day(d),2) &"/"& Year(d) 
    Else 
    DateFormat = d 
    End If 
End Function 

Строго говоря, это будет на самом деле возвращает строку, а не дату, но преобразование его к дате (через CDate или DateValue) удалит ваши аккуратно добавленные ведущие нули.

+0

, это работает именно так, как мне это нужно, большое спасибо @Martha за ваш ответ. –

2

на заказ Формат даты mm представляет Minutes и MM представляет Month

Это:

mm/dd/yyyy

должен быть

MM/dd/yyyy

0

Я вижу, что это старый вопрос, но у меня было много проблем с этим самим, потому что выходной формат DateAdd() зависит от настроек локали на веб-сервере, поэтому я думал, что все равно Я, наконец, получил это фиксируется, заставляя локалите на сессии сервера, вводя этот фрагмент кода на всех ASP-страницах:

«Установите локалите сервер датские
Session.LCID = 1030

источника: https://www.webwiz.co.uk/kb/asp-tutorials/date-time-settings.htm (на этой странице также приведен список кодов стран)

Смежные вопросы