import java.text.SimpleDateFormat;
import java.util.Calendar;

public class CalendarGermanyTime {
	static Calendar cal;
	public static void main(String[] args) {

		cal = Calendar.getInstance();
		cal.setTimeInMillis(0);
		cal.setFirstDayOfWeek(Calendar.MONDAY);

		/*
		 * Error: Setting Milliseconds changes Summer to wintertime --> Error of 3600 seconds !!!
		 */
		set(2015, 9, 25, 1, 59, 59);
		System.out.println(toCalString()); // 25.10.2015 01:59:59.0000 Mitteleuropäische Sommerzeit
		set(Calendar.MILLISECOND, 234);

		System.out.println(toCalString()); // 25.10.2015 01:59:59.0234 Mitteleuropäische Sommerzeit
		add(Calendar.SECOND, 1);
		System.out.println(toCalString()); // 25.10.2015 02:00:00.0234 Mitteleuropäische Sommerzeit
		set(Calendar.MILLISECOND, 0);
		System.out.println(toCalString()); // 25.10.2015 02:00:00.0000 Mitteleuropäische Zeit

	}

	public static void add(int field, int amount) {
		cal.add(field, amount);
	}

	public static void set(int year, int month, int date, int hrs, int min,
			int sec) {
		cal.set(year, month, date, hrs, min, sec);
	}

	public static void set(int field, int amount) {
		cal.set(field, amount);
	}

	public static String toCalString() {
		SimpleDateFormat s = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSSS zzzz");

		return s.format(cal.getTime());
	}


}

