import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Main {
	public static void main(String[] args) {
		LocalDate todayInSystemTz = LocalDate.now();
		System.out.println(todayInSystemTz);

		LocalDate todayInIndia = LocalDate.now(ZoneId.of("Asia/Kolkata"));
		System.out.println(todayInIndia);

		LocalDateTime todayInSystemTzWithZeroTimeUnits = todayInSystemTz.atStartOfDay();
		System.out.println(todayInSystemTzWithZeroTimeUnits);

		ZonedDateTime todayInUtcWithZeroTimeUnits = todayInSystemTzWithZeroTimeUnits.atZone(ZoneId.of("Etc/UTC"));
		System.out.println(todayInUtcWithZeroTimeUnits);

		Instant instant = todayInUtcWithZeroTimeUnits.toInstant();
		System.out.println(instant);

		// Can I represent the obtained Instant in India?
		System.out.println(instant.atZone(ZoneId.of("Asia/Kolkata")));

		// Can I represent the obtained Instant in New York?
		System.out.println(instant.atZone(ZoneId.of("America/New_York")));
	}
}