Obiekt Java Date z String nie działa poprawnie

Wpadłem na uparty problem, którego nie mogę rozwiązać. Szukałem rozwiązań w stackoverflow i znalazłem wiele postów na temat formatowania dat Java, ale nic specyficznego dla problemu, który mam.

Zasadniczo mam sytuację, w której muszę przekonwertować ciągi dat na obiekty java.util.Date. Używam klas Date i SimpleDateFormat. Dla większości dat, które napotykam, działa dobrze. Ale dla niektórych dat działa, ale zmienia aktualną datę. Dwie przykładowe daty:

Piątek 24 lutego 16:45:40 PST 2012 -> zostaje zmieniony na -> Piątek 06 06:45:40 PST 2012

Środa 13 czerwca 10:00:42 PDT 2012 -> zostaje zmieniony na -> środa 04 04 09:00:42 PST 2012

Jakiś pomysł, dlaczego daty się zmieniają? Jakikolwiek sposób, aby łatwo tego uniknąć lub zrobić to w inny sposób? Mój kod jest kopiowany poniżej. Możesz spróbować, aby zobaczyć, o czym mówię.

Z góry dziękuję!

Możesz spróbować tego z następującym kodem 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()+":");

%>

Otrzymuję następujące dane wyjściowe:

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:

questionAnswers(2)

yourAnswerToTheQuestion