2013-07-01 2 views
0

Я беру в поле даты html как date/month/year. Если вход:Дата добавляется в БД, но с месяцем увеличивается на единицу. Почему это?

01/07/2013 

дата в базе данных mysql идет как 2013-08-01. Таким образом, месяц увеличивается на единицу. Почему это ?

Следующий фрагмент вставляет дату в базу данных из html-поля.

 String dateMonthYear[] = issueDate.split("/"); 

     System.out.println("DATE MONT YEAR-------> "+dateMonthYear[1]); 
     // PRINTS THE CORRECT MONTH 

     Calendar cal = Calendar.getInstance(); 

     cal.set(Calendar.YEAR, Integer.parseInt(dateMonthYear[2])); 
     cal.set(Calendar.MONTH, Integer.parseInt(dateMonthYear[1])); 
     cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateMonthYear[0])); 
     Date issueDateDB = cal.getTime(); 

     issued.setDateOfIssue(issueDateDB); 

     // commit operation 

тип соответствующего типа в db является Date. Что может быть причиной того, что моль получает приращение на one?

+0

просто печатать issueDateDB, что грядет соответствующие –

+0

@shreyanshjogi yeah..'issuedDateDB.getTime' печать 'июл 1, 2013 12:42:51 PM' –

ответ

2

Это потому, что Calendar.MONTH is 0-based (Calendar.JANUARY = 0 и т. Д.). Добавьте 1 к месячной части при записи в базу данных, вычитайте 1 при чтении из нее.

Рекомендую прочитать этот вопрос very good answer.

+1

но see..' publishedDateDB.getTime' prints '1 июля 2013 г. 12:42:51 PM, а не' Aug 1,2013'. Почему это так ? –

+0

Но вы видите, что вы устанавливаете значение 1..12, но API ожидает значение 0..11. RandomSeed правильный. И Shreyansh Jogi предлагает другой ... возможно, лучший ... подход использования SimpleDateFormat(). Parse(). – paulsm4

+0

@ paulsm4 _ ".. вы устанавливаете значение 1..12, но API ожидает значение 0..11 .." _ Я не понял вас. Дело в том, что перед тем, как вставить дату в db, месяц будет «июль»! –

0

Только потому, что месяц календаря начинается с 0, а не с 1 из них: - для январского значения месяца 0 нет 1. Так что вы должны уменьшить месяц на -1.

1
Date d = new SimpleDateFormat("dd/MM/yyyy").parse("01/07/2013"); 

попробовать это вместо

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