Значения месяца идут от 0 (январь) до 11 (декабрь). Попробуйте использовать ((int) tmpMonth) - 1 при установке месяца, чтобы получить декабрь.

я проблемы с календарем Java. Я анализирую некоторые данные из TXT-файла, и мне нужно создать дату. После завершения следующего кода:

tmpYear = Double.parseDouble(row[yearIndex]);
tmpMonth = Double.parseDouble(row[monthIndex]);
tmpDay = Double.parseDouble(row[dayIndex]);
if(timeIndex != -1)
    tmpTime = Double.parseDouble(row[timeIndex]);
if(secondsIndex != -1)
    tmpSeconds = Double.parseDouble(row[secondsIndex]);

Я могу отладить и увидеть, что переменные следующие: tmpYear == 2010
tmpMonth == 12
tmpDay == 30
tmpTime == 15 (это час дня)
tmpSeconds == 0

Но при запуске следующий код:

cal.set((int)tmpYear,(int)tmpMonth,(int)tmpDay,(int)tmpTime,
            (int)((tmpTime - (int)tmpTime)*100),(int)tmpSeconds);
System.out.println(cal.getTime().toString());

Я получаю это для вывода:
Вс 30 января 15:00:00 CST 2011

Может кто-нибудь объяснить, какой будет возможная причина этого? Заранее всем спасибо за помощь!

Ответы на вопрос(6)

Ваш ответ на вопрос