I'll write another answer to serdev's comment, since it's a little bit difficult to include much information in a comment alone.
You say that you have to iterate over dates and find distances and if you make some assumptions, which have to be valid for your locale or timezone, this isn't too difficult. If you ignore the time and use your code to subtract one day from "Sat Apr 04 1942", you get "Fri Apr 03 1942" as expected. If you need to find the number of days between to dates, I would calculate it myself:
// set two Calendars to April 1st, 1942 and April 5th, 1942 (both 0:00)
Calendar cal1 = new GregorianCalendar(1942, 3, 1);
Calendar cal2 = new GregorianCalendar(1942, 3, 5);
// divide the difference in ms by the number of ms in 24 hours and round the result
long diff = Math.round((cal2.getTimeInMillis() - cal1.getTimeInMillis()) / (24.*60*60*1000));
Just dividing would with a Finnish time zone give a difference of 3.958 days, but rounding it gives a correct 4 days result.
For this to work, you must however assume that dates are continuous and that your time zone does not change by more than 11 hours between the start and end date. This is not always true, since there have been some cases of nations around the international date line to 'switch side'. The most recent case was when parts of Kiribati skipped December 31st 1994 to have the entire country on one side of the date line. Before the change, the nation's time zones only span a few hours, but because it was split by the date line, the country had in reality two different dates.