Я обнаружил очень странную проблему в Scala.Я пытался получить последний день прошлого месяца.Следующая таблица показывает правильный результат (в Scala месяц начинается с 0 (январь), поэтому март равен 2).
Однако, еслиЯ закомментирую последнюю строку слева, результаты выглядят следующим образом:
Я только назначил переменную lastMonth
до month
.И lastMonth
меняется на 3!
Где я не так?
Вот фрагмент кода:
import java.util.{Calendar, GregorianCalendar} // Get current time and the last date of last month
val now = Calendar.getInstance()
// test code
//now.set(Calendar.MONTH, Calendar.DECEMBER)
// get current year
val currYear = now.get(Calendar.YEAR)
// get current month, JANUARY is 0
val currMonth = now.get(Calendar.MONTH)
// back to last month
val lastMonthCalendar = now
// if this month is Dec, the YEAR would be automatically deducted by 1
lastMonthCalendar.add(Calendar.MONTH, -1)
lastMonthCalendar.getTime
val lastMonth = lastMonthCalendar.get(Calendar.MONTH)
val numDaysOfLastMonth = lastMonthCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)
lastMonthCalendar.set(Calendar.DATE, numDaysOfLastMonth)
lastMonthCalendar.getTime
var year = lastMonthCalendar.get(Calendar.YEAR)
var month = lastMonth