2013-09-27 4 views
0

Я беру входной файл String от пользователя, который я хочу преобразовать в экземпляр java.util.Date и напечатать его определенным образом, используя SimpleDateFormat. Он не печатает указанным образом.Преобразование строки в Date с помощью SimpleDateFormat

try {   Date date1; 
      date1 = new SimpleDateFormat("MM/dd/yy").parse("05/18/05"); 
      System.out.println(date1); 
     } 

     catch (ParseException e) { 

      e.printStackTrace(); 
     } 

ответ

2

необходимо отформатировать дату, прежде чем распечатать его, в противном случае вы используете Date «s формат по умолчанию

try {   
    Date date1; 
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yy"); 
    date1 = format.parse("05/18/05"); 
    System.out.println(format.format(date1)); 
} 

Когда вы

System.out.println(date1); 

внутренне, метод вызова

date1.toString(); 

и распечатывает его результат. Date#toString() реализуется следующим образом

public String toString() { 
    // "EEE MMM dd HH:mm:ss zzz yyyy"; 
    BaseCalendar.Date date = normalize(); 
    StringBuilder sb = new StringBuilder(28); 
    int index = date.getDayOfWeek(); 
    if (index == gcal.SUNDAY) { 
     index = 8; 
    } 
    convertToAbbr(sb, wtb[index]).append(' ');      // EEE 
    convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' '); // MMM 
    CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd 

    CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':'); // HH 
    CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm 
    CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss 
    TimeZone zi = date.getZone(); 
    if (zi != null) { 
     sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz 
    } else { 
     sb.append("GMT"); 
    } 
    sb.append(' ').append(date.getYear()); // yyyy 
    return sb.toString(); 
} 

, что приводит к Date строке вы видите.

+0

метод формат, в конечном счете производят String.I нужен выход в java.util.Date наряду с/дд ММ/yy формат – Sanjana

+0

@Sanjana A 'Date' не имеет формата. У вас есть дата в 'date1'. Вам нужно будет отформатировать его, чтобы отобразить его по своему усмотрению. –

2

Не печатается указанным образом.

System.out.println(date1); // no format given, using the default format 

Вы не указав способ. Дата не имеет истории формата, в котором она была проанализирована. Если вы хотите формат, вам нужно использовать SimpleDateFormat.format()

0

Попробуйте

try { 
      SimpleDateFormat sdin = new SimpleDateFormat("yyyy-MM-dd"); 
      SimpleDateFormat sdout = new SimpleDateFormat("yyyy-MMM-dd"); 
      Date date = sdin.parse("2013-05-31"); 
      System.out.println(sdout.format(date)); 
     } catch (ParseException ex) { 
      Logger.getLogger(TestDate.class.getName()).log(Level.SEVERE, null, ex); 
     } 
Смежные вопросы