Как получить название месяца 12 месяцев назад с asp classic? - PullRequest
2 голосов
/ 01 октября 2019

Я хочу отобразить короткое имя для каждого месяца, 12 месяцев назад по сравнению с предыдущим месяцем, но с приведенным ниже сообщением я получаю сообщение об ошибке на mon1 и mon2, и думаю, так как это в прошлом году?

    mon1=MonthName(Month(Now())-11,1)
    mon2=MonthName(Month(Now())-10,1)
    mon3=MonthName(Month(Now())-9,1)
    mon4=MonthName(Month(Now())-8,1)
    mon5=MonthName(Month(Now())-7,1)
    mon6=MonthName(Month(Now())-6,1)
    mon7=MonthName(Month(Now())-5,1)
    mon8=MonthName(Month(Now())-4,1)
    mon9=MonthName(Month(Now())-3,1)
    mon10=MonthName(Month(Now())-2,1)
    mon11=MonthName(Month(Now())-1,1)
    mon12=MonthName(Month(Now()),1)

Так как я могу отобразить сейчас, декабрь, январь, февраль, мар, апр, май, июнь, июл, авг, сент, окт Спасибо!

1 Ответ

2 голосов
/ 01 октября 2019

Проблема в том, что функция Month() возвращает целое число от 1 до 12 для представления каждого месяца. Вместо этого вы хотите вычесть число месяцев из значения Now(), прежде чем заключить его в Month().

Ниже приведен пример, который делает это с использованием цикла For и одного измерения Array.

Dim dt: dt = Now()
Dim i, mon(12)
Const numOfMonths = 12

For i = 1 To numOfMonths
  mon(i) = MonthName(Month(DateAdd("m", i - numOfMonths, dt)), True)
Next

Call Response.Write(Join(mon, vbCrLf))

Выход:

Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
Dec
Nov
Oct
...