# withZoneSameInstant method

ZonedDateTime withZoneSameInstant(

1. ZoneId zone

)

Converts this date-time to the same instant in a different timezone.

The instant in time remains the same, but the local date-time values change to reflect the new timezone.

Example:

    final nyTime = ZonedDateTime.parse('2023-12-25T15:00:00-05:00[America/New_York]');
    final londonTime = nyTime.withZoneSameInstant(ZoneId.of('Europe/London'));
    final tokyoTime = nyTime.withZoneSameInstant(ZoneId.of('Asia/Tokyo'));

    print('New York: $nyTime');    // 15:00 EST
    print('London: $londonTime');  // 20:00 GMT (5 hours ahead)
    print('Tokyo: $tokyoTime');    // 05:00 JST next day (14 hours ahead)

## Implementation

    ZonedDateTime withZoneSameInstant(ZoneId zone) {
      if (_zone == zone) return this;

      // Convert to UTC first
      final utcDateTime = _localDateTime.minus(_offset);

      // Then convert to target timezone
      final offsetData = TimezoneDatabase.getOffsetForZone(zone.id, utcDateTime);
      final targetDateTime = utcDateTime.plus(offsetData.offset);

      return ZonedDateTime._(targetDateTime, zone, offsetData.offset, offsetData.isDst);
    }