2010-12-07 8 views
1

Мое требование - получить дату в формате MM/dd/yy. Но в настоящее время я получаю значение даты как «Sun Dec 31 00:00:00 IST 2006». Я попробовал пример кода для преобразования следующим образом.формат даты в java

String pattern = "MM/dd/yyyy"; 
    SimpleDateFormat format = new SimpleDateFormat(pattern); 
    try { 
    Date date = format.parse("12/31/2006"); 
    System.out.println(date); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
    } 

Пожалуйста, помогите мне, чтобы преобразовать данную дату в MM/dd/yy

ответ

7

Вы должны использовать SDF (SimpleDateFormat) для обработки результатов тоже.

String pattern = "MM/dd/yyyy"; 
    SimpleDateFormat format = new SimpleDateFormat(pattern); 
    try { 
    Date date = format.parse("12/31/2006"); 
    System.out.println(format.format(date)); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
    } 
+0

Спасибо, яблоки и все. Вышеупомянутый код работает хорошо. Побольше поделились датой. Я выбираю это как = мой принятый ответ. – i2ijeya 2010-12-07 15:32:07

0

Вы используете SimpleDateFormat для синтаксического анализа строку, и это прекрасно работает - но тогда вы используете Date метод «s ToString (неявно) при форматировании дата. Это будет использовать формат по умолчанию, который полностью не зависит от формата, который изначально использовался для анализа значения.

A Date объект знает ничего о том, как вы хотите отформатировать его. Это то, что вы должны использовать SimpleDateFormat для.

Вы можете использовать SimpleDateFormat форматировать его снова:

System.out.println(format.format(date)); 

... но лучше было бы перейти к Joda Time и использовать его DateTimeFormatter класс, который является поточно-и неизменное, в отличие от SimpleDateFormat ... остальная часть его API тоже лучше.

1

Изменить код:

String pattern = ; 
SimpleDateFormat inputFormat = new SimpleDateFormat("MM/dd/yyyy"); 
SimpleDateFormat outputFormat = new SimpleDateFormat("MM/dd/yy"); 
try { 
    Date date = inputFormat.parse("12/31/2006"); 
    System.out.println(outputFormat.format(date)); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
1

Причина вашего выхода, потому что вы выводите объект даты через System.out.println(date);, который эффективно, переведенный на System.out.println(date.toString());

toString() метод даты Date выходов в формате:

EEE MMM dd HH:mm:ss zzz yyyy 

Код здесь для 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(); 
    } 

Ваш код верный. Используйте SimpleDateFormat, чтобы отобразить такую ​​дату:

System.out.println(format.format(date)); 
Смежные вопросы