Java Date объект из String не работает должным образом

Я столкнулся с упрямой проблемой, которую не могу решить. Я искал решения в stackoverflow и нашел много сообщений о форматировании даты в Java, но ничего конкретного, касающегося моей проблемы.

По сути, у меня есть ситуация, когда мне нужно преобразовать строки даты в объекты java.util.Date. Я использую классы Date и SimpleDateFormat. Для большинства дат, с которыми я встречаюсь, это работает просто отлично. Но для некоторых дат это работает, но меняет фактическую дату. Две примерные даты:

Пт Фев 24 16:45:40 PST 2012 -> меняется на -> Пт Ян 06 16:45:40 PST 2012

Ср. 13 июня 10:00:42 PDT 2012 -> меняется на -> Ср Янв 04 09:00:42 PST 2012

Есть идеи, почему даты меняются? Есть ли способ легко избежать этого или сделать это по-другому? Мой код скопирован ниже. Вы можете попробовать это, чтобы увидеть то, о чем я говорю.

Заранее спасибо!

Вы можете попробовать это с помощью следующего кода JSP:

<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.text.*" %>

<%
String dateStr = "";
Date tmpDate = null;
DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z YYYY");

System.out.println("First Test ---------------");
dateStr = "Fri Feb 24 16:45:40 PST 2012";
tmpDate = (Date) formatter.parse(dateStr);
System.out.println("Original:"+dateStr+":");
System.out.println("Date Obj:"+tmpDate.toString()+":");

System.out.println("Second Test --------------");
dateStr = "Wed Jun 13 10:00:42 PDT 2012";
tmpDate = (Date) formatter.parse(dateStr);
System.out.println("Original:"+dateStr+":");
System.out.println("Date Obj:"+tmpDate.toString()+":");

%>

Я получаю следующий вывод:

First Test ------------
Original:Fri Feb 24 16:45:40 PST 2012:
Date Obj:Fri Jan 06 16:45:40 PST 2012:
Second Test -----------
Original:Wed Jun 13 10:00:42 PDT 2012:
Date Obj:Wed Jan 04 09:00:42 PST 2012:

Ответы на вопрос(2)

Ваш ответ на вопрос