Преобразование даты строкового формата в объект даты

Я получаю формат даты в строке как вывод, как это.

Пт, 18 мая, 00:00:00 по восточному поясному времени 2012 г.

Мне нужно преобразовать это в объект даты. Какой подход мне использовать?

Спасибо.

Это программа, которую я использовал.

import java.util.*;
import java.text.*;

public class DateToString {
    public static void main(String[] args) {
        try {
            DateFormat formatter ;
            Date date ;
            formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'EDT' yyyy ");
            date = (Date)formatter.parse("Fri May 18 00:00:00 EDT 2012");
            String s = formatter.format(date);
            System.out.println("Today is " + s);
        } catch (ParseException e) {
            System.out.println("Exception :"+e); 
        }
    }
}

person Azar    schedule 28.05.2012    source источник


Ответы (3)


Используйте SimpleDateFormat и реализации для отображения даты в нужном вам формате.

Пример:

String myDateString = "Fri May 18 00:00:00 EDT 2012";
SimpleDateFormat dateFormat = new SimpleDateFormat();
dateFormat.applyPattern( "EEE MMM dd HH:mm:ss z yyyy" );

try {
    Date d = dateFormat.parse( myDateString );
    System.out.println( d ); // Fri May 18 00:00:00 EDT 2012

    String datePattern1 = "yyyy-MM-dd";
    dateFormat.applyPattern( datePattern1 );
    System.out.println( dateFormat.format( d ) ); // 2012-05-18

    String datePattern2 = "yyyy.MM.dd G 'at' HH:mm:ss z";
    dateFormat.applyPattern( datePattern2 );
    System.out.println( dateFormat.format( d ) ); // 2012.05.18 AD at 00:00:00 EDT

    String datePattern3 = "yyyy.MM.dd G 'at' HH:mm:ss Z";
    dateFormat.applyPattern( datePattern3 );
    System.out.println( dateFormat.format( d ) ); // 2012.05.18 AD at 00:00:00 -400
}
catch ( Exception e ) { // ParseException
    e.printStackTrace();
}
person Ravinder Reddy    schedule 28.05.2012
comment
Ну вот вы форматируете дату. У меня есть d как строка, а не как объект даты - person Azar; 28.05.2012
comment
Спасибо, это работает идеально - person Azar; 28.05.2012
comment
@user1422029 System.out.println( "Thanks This is Working Perfect".equals( "answerAccepted" ) ); // false - person Ravinder Reddy; 28.05.2012

Взгляните на: java.text.SimpleDateFormat Java API< /а>

SimpleDateFormat dateParser = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy", 
    Locale.US);
Date date = dateParser.parse("Fri May 18 00:00:00 EDT 2012");

Обновление: примечание для себя, язык может быть важен.

person Mattias Isegran Bergander    schedule 28.05.2012
comment
‹код› импортировать java.util.*; импортировать java.текст.*; открытый класс DateToString { public static void main (String [] args) { try { Форматировщик DateFormat; Дата Дата ; formatter = new SimpleDateFormat (EEE MMM dd HH:mm:ss 'EDT' yyyy); date = (Date)formatter.parse (пятница, 18 мая, 00:00:00 по восточному поясному времени 2012 г.); Строка s = formatter.format(дата); System.out.println(Сегодня +с); } catch (ParseException e) {System.out.println(Exception:+e); } } } ‹/код› - person Azar; 28.05.2012
comment
Нужно указать локаль, я обновил ответ ранее. - person Mattias Isegran Bergander; 28.05.2012
comment
Укажите часовой пояс GMT, я думаю? - person JMelnik; 28.05.2012
comment
Я не могу ручаться за ваш код, поскольку он не делает то же самое, что я перечислил здесь, у вас есть другая строка формата в коде, который вы вставили сюда @Azar ... Кажется, вы перепутали его с чужим кодом и теперь принял ответ, который был сделан через час с моим точным кодом :) - person Mattias Isegran Bergander; 28.05.2012

Используйте SimpleDateFormat со следующим шаблоном:

EEE MMM dd HH:mm:ss 'EDT' YYYY

Это не касается часового пояса. Альтернативно, с включением часового пояса: (непроверено) EEE MMM dd HH:mm:ss z YYYY (это строчная буква z). Имейте в виду, я еще не проверял это (так как я возвращаюсь домой с работы).

person Buhake Sindi    schedule 28.05.2012
comment
Это будет анализировать EDT буквально, а не как спецификатор часового пояса, не так ли? - person NPE; 28.05.2012
comment
[код] импортировать java.util.*; импортировать java.текст.*; открытый класс DateToString { public static void main (String [] args) { try { Форматировщик DateFormat; Дата Дата ; formatter = new SimpleDateFormat (EEE MMM dd HH:mm:ss 'EDT' yyyy); date = (Date)formatter.parse (пятница, 18 мая, 00:00:00 по восточному поясному времени 2012 г.); Строка s = formatter.format(дата); System.out.println(Сегодня +с); } catch (ParseException e) {System.out.println(Exception:+e); } } } - person Azar; 28.05.2012
comment
@aix, да, это потому, что я пытался разобраться между z и Z. - person Buhake Sindi; 28.05.2012
comment
@ user1422029, раздел комментариев не место для вставки кода. Обновите свой пост, если хотите. - person Buhake Sindi; 28.05.2012
comment
@user1422029 user1422029 Пожалуйста, обновите свой вопрос своим кодом и сообщите нам, что именно не работает. Показать трассировку стека исключений, если применимо. - person maksimov; 28.05.2012
comment
@ user1422029, опубликуйте stacktrace, если хотите, чтобы мы поняли вашу ошибку. Вы использовали мой второй шаблон (тот, который включает часовой пояс)? - person Buhake Sindi; 28.05.2012
comment
---------- java ---------- Исключение: java.text.ParseException: неразборчивая дата: пятница, 18 мая, 00:00:00 по восточному поясному времени 2012 г. - person Azar; 28.05.2012