/*-
 * Copyright (C) 2006 Erik Larsson
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.catacombae.hfsexplorer.testcode;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

/**
 * Reference to how the field HFSPlusDate.DIFF_TO_JAVA_DATE_IN_MILLIS is calculated.
 *
 * @author <a href="https://catacombae.org" target="_top">Erik Larsson</a>
 */
public class DateCalc {
    public static void main(String[] args) {
	Date d = new Date(0); // the exact date of the start of the epoch
	// HFS+ dates start at January 1, 1904, GMT, so we need to
	// find out the difference in milliseconds between those two dates.
	TimeZone usedTZ = TimeZone.getTimeZone("GMT+00:00");
	System.out.println(usedTZ);
	System.out.println(usedTZ.useDaylightTime());
	Calendar c1 = Calendar.getInstance(usedTZ);
	c1.setTime(d);
	c1.set(1904, 0, 1);
	Calendar c2 = Calendar.getInstance(usedTZ);
	c2.setTime(d);
	System.out.println("c1: " + c1);
	System.out.println("c2: " + c2);
	DateFormat dti = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
	dti.setTimeZone(usedTZ);
	System.out.println("c1.getTime(): " + dti.format(c1.getTime()));
	System.out.println("c2.getTime(): " + dti.format(c2.getTime()));
	System.out.println("d: " + dti.format(d));
	System.out.println("c1.getTime().getTime(): " + c1.getTime().getTime());
	System.out.println("c2.getTime().getTime(): " + c2.getTime().getTime());
	System.out.println("d.getTime(): " + d.getTime());
	System.out.println("Diff in millis: " + (c2.getTime().getTime()-c1.getTime().getTime()));
    }
}
