Как разобрать строку даты на дату? [дубликат]



этот вопрос уже есть ответ здесь:




  • Преобразование строки Java в дату

    14 ответов



как мне разобрать строку даты ниже в

636   6  

6 ответов:

шаблон неправильный. У вас есть аббревиатура дня из 3 букв, поэтому она должна быть EEE. У вас есть аббревиатура месяца из 3 букв, поэтому она должна быть MMM. Поскольку эти аббревиатуры дня и месяца чувствительны к локали, вы хотели бы явно указать SimpleDateFormat locale на английский язык, а в противном случае он будет использовать локаль платформы по умолчанию, которая не может быть английской как таковой.

public static void main(String[] args) throws Exception {
    String target = "Thu Sep 28 20:29:30 JST 2000";
    DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH);
    Date result =  df.parse(target);  
    System.out.println(result);
}

печатается здесь

Thu Sep 28 07:29:30 BOT 2000

что правильно согласно моему часовой пояс.

Я бы также пересмотреть, если вы не хотели бы использовать HH вместо kk. Читайте документация для получения подробной информации о допустимых шаблонов.

вот пример:

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

public class j4496359 {
    public static void main(String[] args) {
        try {
            String target = "Thu Sep 28 20:29:30 JST 2000";
            DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss zzz yyyy");
            Date result =  df.parse(target);
            System.out.println(result); 
        } catch (ParseException pe) {
            pe.printStackTrace();
        }
    }
}

выведет:

Thu Sep 28 13:29:30 CEST 2000
String target = "27-09-1991 20:29:30";
DateFormat df = new SimpleDateFormat("dd MM yyyy HH:mm:ss");
Date result =  df.parse(target);
System.out.println(result); 

это работает?

new SimpleDateFormat("EEE MMM dd kk:mm:ss ZZZ yyyy");

и

new SimpleDateFormat("EEE MMM dd kk:mm:ss Z yyyy");

по-прежнему работает. Однако, если ваш код создает исключение, это связано с вашим инструментом или jdk или любой другой причиной. Потому что я получил ту же ошибку в моей IDE, но, пожалуйста, проверьте эти http://ideone.com/Y2cRr (онлайн ide) с ZZZ и Z

вывод : Thu Sep 28 11:29:30 GMT 2000

у меня была эта проблема, и я установил Locale to US, тогда это работает.

static DateFormat visitTimeFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US);

на String"Sun Jul 08 00:06:30 UTC 2012"

исключение разбора является проверенным исключением, поэтому вы должны поймать его с помощью try-catch при работе с разбором строк на даты, как предложил @miku...

Comments

    Ничего не найдено.