import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
 
public class Main {
    public static void main
(String[] args
) {         Duration result = calculateTimeDifference("-2", "2023-07-16");
        System.
out.
println("Time Difference Calculated : " + result
);         // You can get time units separately as well
        System.
out.
printf("%d hours, %d minutes%n", result.
toHoursPart(), result.
toMinutesPart());     }
 
    static Duration calculateTimeDifference
(String hotelOffset, 
String CheckInDt
) {         LocalDateTime nowInNY = LocalDateTime.now(ZoneId.of("America/New_York"));
 
        // Convert hotel's timezone offset string to minutes
        int offsetValue 
= Integer.
parseInt(hotelOffset
);         int offsetInMinutes = offsetValue * 30;
 
        LocalDateTime nowAtHotel = nowInNY.plusMinutes(offsetInMinutes);
 
        LocalDateTime checkInDateTime = LocalDate.parse(CheckInDt)
                                            .atTime(LocalTime.of(15, 0));
 
        return Duration.between(nowAtHotel, checkInDateTime);
    }
}
				aW1wb3J0IGphdmEudGltZS5EdXJhdGlvbjsKaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGU7CmltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlVGltZTsKaW1wb3J0IGphdmEudGltZS5Mb2NhbFRpbWU7CmltcG9ydCBqYXZhLnRpbWUuWm9uZUlkOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIER1cmF0aW9uIHJlc3VsdCA9IGNhbGN1bGF0ZVRpbWVEaWZmZXJlbmNlKCItMiIsICIyMDIzLTA3LTE2Iik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUaW1lIERpZmZlcmVuY2UgQ2FsY3VsYXRlZCA6ICIgKyByZXN1bHQpOwogICAgICAgIC8vIFlvdSBjYW4gZ2V0IHRpbWUgdW5pdHMgc2VwYXJhdGVseSBhcyB3ZWxsCiAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIiVkIGhvdXJzLCAlZCBtaW51dGVzJW4iLCByZXN1bHQudG9Ib3Vyc1BhcnQoKSwgcmVzdWx0LnRvTWludXRlc1BhcnQoKSk7CiAgICB9CgogICAgc3RhdGljIER1cmF0aW9uIGNhbGN1bGF0ZVRpbWVEaWZmZXJlbmNlKFN0cmluZyBob3RlbE9mZnNldCwgU3RyaW5nIENoZWNrSW5EdCkgewogICAgICAgIExvY2FsRGF0ZVRpbWUgbm93SW5OWSA9IExvY2FsRGF0ZVRpbWUubm93KFpvbmVJZC5vZigiQW1lcmljYS9OZXdfWW9yayIpKTsKCiAgICAgICAgLy8gQ29udmVydCBob3RlbCdzIHRpbWV6b25lIG9mZnNldCBzdHJpbmcgdG8gbWludXRlcwogICAgICAgIGludCBvZmZzZXRWYWx1ZSA9IEludGVnZXIucGFyc2VJbnQoaG90ZWxPZmZzZXQpOwogICAgICAgIGludCBvZmZzZXRJbk1pbnV0ZXMgPSBvZmZzZXRWYWx1ZSAqIDMwOwoKICAgICAgICBMb2NhbERhdGVUaW1lIG5vd0F0SG90ZWwgPSBub3dJbk5ZLnBsdXNNaW51dGVzKG9mZnNldEluTWludXRlcyk7CgogICAgICAgIExvY2FsRGF0ZVRpbWUgY2hlY2tJbkRhdGVUaW1lID0gTG9jYWxEYXRlLnBhcnNlKENoZWNrSW5EdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXRUaW1lKExvY2FsVGltZS5vZigxNSwgMCkpOwoKICAgICAgICByZXR1cm4gRHVyYXRpb24uYmV0d2Vlbihub3dBdEhvdGVsLCBjaGVja0luRGF0ZVRpbWUpOwogICAgfQp9