import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;

public class Main {
	public static void main(String[] args) {
		// Test
		System.out.println(getDiffDateMap("2012-9-01 20:9:01", "2012-10-01 20:10:01"));
	}

	public static Map<Integer, String> getDiffDateMap(String dateA, String dateB) {
		Map<Integer, String> out = new LinkedHashMap<Integer, String>();
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("u-M-d H:m:s", Locale.ENGLISH);
		LocalDateTime ldtA = LocalDateTime.parse(dateA, dtf);
		LocalDateTime ldtB = LocalDateTime.parse(dateB, dtf);

		out.put(7, String.valueOf(ChronoUnit.MILLIS.between(ldtA, ldtB)));
		out.put(6, String.valueOf(ChronoUnit.SECONDS.between(ldtA, ldtB)));
		out.put(5, String.valueOf(ChronoUnit.MINUTES.between(ldtA, ldtB)));
		out.put(4, String.valueOf(ChronoUnit.HOURS.between(ldtA, ldtB)));
		out.put(3, String.valueOf(ChronoUnit.DAYS.between(ldtA, ldtB)));
		out.put(2, String.valueOf(ChronoUnit.WEEKS.between(ldtA, ldtB)));
		out.put(1, String.valueOf(ChronoUnit.MONTHS.between(ldtA, ldtB)));
		out.put(0, String.valueOf(ChronoUnit.YEARS.between(ldtA, ldtB)));

		return out;
	}
}