Конвертировать строку в формат даты в Android - PullRequest
14 голосов
/ 16 января 2012

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

Ответы [ 6 ]

30 голосов
/ 16 января 2012
public class Utils {

    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);
    }
}
5 голосов
/ 16 января 2012
   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

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

2 голосов
/ 16 января 2012

Я предлагаю использовать 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 голос
/ 16 января 2012
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 ;
1 голос
/ 16 января 2012

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

 public static String getTime(long milliseconds)
{

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

вы также можете попробовать ДАТА ФОРМАТ класс для лучшего понимания.

0 голосов
/ 18 августа 2016
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;
}
...