6 ответов:
шаблон неправильный. У вас есть аббревиатура дня из 3 букв, поэтому она должна быть
EEE. У вас есть аббревиатура месяца из 3 букв, поэтому она должна бытьMMM. Поскольку эти аббревиатуры дня и месяца чувствительны к локали, вы хотели бы явно указатьSimpleDateFormatlocale на английский язык, а в противном случае он будет использовать локаль платформы по умолчанию, которая не может быть английской как таковой.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
у меня была эта проблема, и я установил
LocaletoUS, тогда это работает.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