2012-01-16 7 views
13

Я пытаюсь преобразовать строку в формат даты. Я пытаюсь много способов сделать это. Но не удалось. моя строка - «17 января 2012». Я хочу преобразовать это как «2011-10-17». Не мог бы кто-нибудь рассказать мне, как это сделать? Если вы проработали какие-то примеры, это будет реальной помощью!Преобразование строки в формат даты в android

+0

не совсем Android вопрос – Guillaume

ответ

25
public class DateFormatClass { 
    public static void main(String[] args) { 

     String mytime="Jan 17, 2012"; 
     SimpleDateFormat dateFormat = new SimpleDateFormat(
       "MMM dd, yyyy"); 
     Date myDate = null; 
     try { 
      myDate = dateFormat.parse(mytime); 

     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd"); 
     String finalDate = timeFormat.format(myDate); 

     System.out.println(finalDate); 
    } 
} 
2

Я предлагаю использовать Joda Time, это лучшая и простая библиотека для обработки даты/даты в Java, и это ThreadSafe (в отличие от классов форматирования по умолчанию на Java).

Вы можете использовать его таким образом:

// Define formatters: 
DateTimeFormatter inputFormat = DateTimeFormat.forPattern("MMM dd, yyyy"); 
DateTimeFormatter outputFormat = DateTimeFormat.forPattern("yyyy-MM-dd"); 

// Do your conversion: 
String inputDate = "Jan 17, 2012"; 
DateTime date = inputFormat.parseDateTime(inputDate); 
String outputDate = outputFormat.print(date); 
// or: 
String outputDate = date.toString(outputFormat); 
// or: 
String outputDate = date.toString("yyyy-MM-dd"); 

// Result: 2012-01-17 

Он также предоставляет множество полезных методов для операций по датам (добавить день, разница во времени и т.д.). И он предоставляет интерфейсы для большинства классов для легкой проверки и инъекции зависимостей.

1

Почему вы хотите преобразовать строку в строку, попробуйте преобразовать текущее время в milisecond в форматированный String, , этот метод преобразует ваши milisconds в форматирование данных.

public static String getTime(long milliseconds) 
{ 

     return DateFormat.format("MMM dd, yyyy", milliseconds).toString(); 
} 

вы также можете попробовать DATE FORMATE класс для лучшего понимания.

5
String format = "yyyy-MM-dd"; 
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US); 
    System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 

Который производит этот выход при запуске в часовом поясе PDT:

    yyyy-MM-dd 1969-12-31 
       yyyy-MM-dd 1970-01-01 

Для получения дополнительной информации смотрите на here

1
You can't convert date from one format to other. while you are taking the date take you have take the date which ever format the you want. If you want the date in yyyy-mm-dd. You can get this by using following way. 

      java.util.Calendar calc = java.util.Calendar.getInstance(); 

     int day = calc.get(java.util.Calendar.DATE); 
     int month = calc.get(java.util.Calendar.MONTH)+1; 
     int year = calc.get(java.util.Calendar.YEAR); 

      String currentdate = year +"/"+month +"/"+day ; 
0
public static Date getDateFromString(String date) { 

    Date dt = null; 

    if (date != null) { 
     for (String sdf : supportedDateFormats) { 
      try { 
       dt = new Date(new SimpleDateFormat(sdf).parse(date).getTime()); 
       break; 
      } catch (ParseException pe) { 
       pe.printStackTrace(); 
      } 
     } 
    } 
    return dt; 
} 
+0

Используйте этот метод, он отлично работает для меня, я могу als o также получать дату в миллисекундах. –

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