2015-01-09 7 views
2

Я использую ниже кодФорматирование java.sql.Date к YYyyMmDd

@SuppressWarnings("deprecation") 
Date d = new Date (2014,01,9); 
System.out.println(d); 
DateFormat df = new SimpleDateFormat("yyyyMMdd"); 
final String text = df.format(d); 
System.out.println(text); 

Я получаю ниже выхода.

3914-02-09 
39140209 

Кто-нибудь знает, почему существует 3914?

Спасибо, Махеш

ответ

2

Javadoc для конструктора, который вы используете java.sql.Date(int,int,int) читает (частично),

год - год минус 1900; должен быть от 0 до 8099. (Обратите внимание, что 8099 9999 минус 1900.)

поэтому вы должны использовать (если вы имели в виду этот год)

Date d = new Date (2015-1900,01,9); 
+0

@Makoto Название вопроса * Форматирование java.sql.Date в YYyyMmDd * –

+0

Touche. Должно быть, я прочитал этот вопрос слишком быстро. – Makoto

+0

Спасибо @ElliottFrisch, почему это «год минус 1900, должен быть от 0 до 8099. (Обратите внимание, что 8099 - 9999 минус 1900.)»? Любая причина? не могли бы вы пролить свет на эту просьбу? Это день рождения кого-нибудь (может быть, день рождения автора этого класса) lol: P – MaheshVarma

2

От Java Docs,

Deprecated. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date). 

Allocates a Date object and initializes it so that it represents midnight, local time, at the beginning of the day specified by the year, month, and date arguments. 

Parameters: 
year the year minus 1900. 
month the month between 0-11. 
date the day of the month between 1-31. 

Код

public static void main(String[] args) { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
     int year = 2014; 
     int month = 01; 
     int day = 9; 
     Calendar cal = Calendar.getInstance(); 
     cal.set(Calendar.YEAR, year); 
     cal.set(Calendar.MONTH, month - 1); 
     cal.set(Calendar.DAY_OF_MONTH, day); 

     java.sql.Date date = new java.sql.Date(cal.getTimeInMillis()); 
     System.out.println(sdf.format(date)); 
    } 

выход

2014-01-09 
Смежные вопросы