2012-03-30 6 views
0

Я хочу преобразовать строка в дата формат, но следующий способ не работал.преобразовать строку на дату тип

Он дает null для birth.


Date birth; 
try { 
    DateFormat formatter ; 
    formatter = new SimpleDateFormat("dd-MMM-yyyy"); 
    birth = (Date)formatter.parse(birthDate); // birtDate is a string 
} catch (ParseException e) { 
    System.out.println("Exception :"+e); 
} 
+1

Какова ценность этой даты рождения? – Venki

+1

Почему бы не использовать joda-time? – Venki

+0

birthDate = "10-Jun-2005"; – aisheh90

ответ

2

Ваш ответ прямо на деньги. Я положил его в полную программу и протестировал ее.
Теперь она печатает

Default date format Fri Mar 30 00:00:00 CDT 2012 
Our SimpleDateFormat 30-Mar-2012 
Our SimpleDateFormat with all uppercase 30-MAR-2012 

Вот несколько советов:

  • Убедитесь, что вы в том числе правильный импорт. В зависимости от , что находится в вашем пути к классу, возможно, вы случайно импортировали java.sql.Date или какой-либо другой импорт жулика.
  • Попробуйте напечатать содержимое из BirthDate перед входом в блок попробовать и убедиться, что он действительно содержит строку в формате дд-MMM-YYYY

-

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class BirthDate { 

    public static void main(String[] args) { 
     Date birth = null; 
     String birthDate = "30-MAR-2012"; 
     DateFormat formatter = null; 
     try { 
      formatter = new SimpleDateFormat("dd-MMM-yyyy"); 
      birth = (Date) formatter.parse(birthDate); // birtDate is a string 
     } 
     catch (ParseException e) { 
      System.out.println("Exception :" + e); 
     } 
     if (birth == null) { 
      System.out.println("Birth object is still null."); 
     } else { 
      System.out.println("Default date format " + birth); 
      System.out.println("Our SimpleDateFormat " + formatter.format(birth)); 
      System.out.println("Our SimpleDateFormat with all uppercase " + formatter.format(birth).toUpperCase()); 
     } 
    } 
} 
+0

Спасибо за работу :) – aisheh90

+0

, но вы знаете, как показать это без 00:00:00 CDT ?? – aisheh90

+0

Конечно, я просто обновил ответ так, чтобы он снова использовал объект SimpleDateFormat, чтобы распечатать дату в том же формате. Объект SimpleDateFormat может использоваться как для синтаксического анализа даты, так и для печати даты. –

0

Ваш код работает отлично. Если вы хотите использовать Joda Time, вы можете использовать это. Вы можете просмотреть документацию, чтобы развернуть полную функциональность, если вы планируете использовать время для тестирования БД и прочее.

import org.joda.time.DateTime; 
DateTime dt = new DateTime("YYYY-MM-DD");//new DateTime("2012-03-30") 
System.out.println(dt); 
Смежные вопросы