Как анализировать дату в Date?
Как выполнить синтаксический анализ строки даты ниже в Date
?
String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("E MM dd kk:mm:ss z yyyy");
Date result = df.parse(target);
Выдает исключение...
java.text.ParseException: Unparseable date: "Thu Sep 28 20:29:30 JST 2000"
at java.text.DateFormat.parse(DateFormat.java:337)
Ответы
Ответ 1
Образец неправильный. У вас есть аббревиатура 3-х дневного дня, поэтому она должна быть EEE
. У вас есть аббревиатура с 3-мя символами, поэтому она должна быть MMM
. Поскольку эти аббревиатуры в дневное и месячное время чувствительны к локали, вы должны явно указать язык SimpleDateFormat
на английский язык, а в противном случае он будет использовать языковой стандарт платформы по умолчанию, который может быть не сам по себе.
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
. Подробнее о действительных шаблонах читайте javadoc.
Ответ 2
Вот рабочий пример:
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
Ответ 3
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);
Это прекрасно работает?
Ответ 4
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 (онлайн-идея) с ZZZ и Z
: Thu Sep 28 11:29:30 GMT 2000
Ответ 5
У меня была эта проблема, и я установил Locale
в 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"
Ответ 6
Исключение синтаксического анализа - это проверенное исключение, поэтому вы должны поймать его с помощью try-catch при работе с синтаксическим анализом строк с датами, поскольку @miku предложил...