# ZonedDateTime.of constructor

ZonedDateTime.of(

1. LocalDateTime localDateTime,
2. ZoneId zone

)

Creates a ZonedDateTime with the specified LocalDateTime and ZoneId.

The timezone offset is automatically calculated based on the zone and the date-time provided. Daylight saving time rules are applied when applicable.

Example:

    final localDT = LocalDateTime.of(2023, 7, 15, 12, 0); // July 15, noon
    final newYork = ZonedDateTime.of(localDT, ZoneId.of('America/New_York'));
    print(newYork); // 2023-07-15T12:00:00-04:00[America/New_York] (EDT)

    final london = ZonedDateTime.of(localDT, ZoneId.of('Europe/London'));
    print(london); // 2023-07-15T12:00:00+01:00[Europe/London] (BST)

Represents a date-time with timezone information.

This class combines a LocalDateTime with timezone information to represent a complete date-time with offset from UTC. Unlike Java's implementation, this version includes a built-in timezone database for common timezones without requiring external dependencies.

## Key Features:

- Immutable: All operations return new instances
- Timezone Aware: Handles UTC offsets and common timezone names
- DST Support: Basic daylight saving time handling for major timezones
- Conversion: Easy conversion between timezones
- Formatting: ISO 8601 compliant string representation

## Supported Timezone Formats:

- UTC Offsets: `+05:00`, `-08:00`, `Z` (for UTC)
- Timezone Names: `EST`, `PST`, `GMT`, `CET`, etc.
- Full Names: `America/New_York`, `Europe/London`, etc.

## Usage Examples:

    // Create from current time
    final now = ZonedDateTime.now();
    final nowInParis = ZonedDateTime.now(ZoneId.of('Europe/Paris'));

    // Create with specific date-time
    final localDT = LocalDateTime.of(2023, 12, 25, 15, 30);
    final christmas = ZonedDateTime.of(localDT, ZoneId.of('America/New_York'));

    // Parse from string
    final parsed = ZonedDateTime.parse('2023-12-25T15:30:00+01:00[Europe/Paris]');

    // Convert between timezones
    final utc = christmas.toUtc();
    final tokyo = christmas.withZoneSameInstant(ZoneId.of('Asia/Tokyo'));

    // Arithmetic operations
    final tomorrow = christmas.plusDays(1);
    final nextHour = christmas.plusHours(1);

## Timezone Database:

This implementation includes a comprehensive timezone database with:

- Major world timezones with their UTC offsets
- Daylight saving time rules for common timezones
- Historical timezone data for accurate conversions
- Support for both abbreviated and full timezone names

## Implementation

    factory ZonedDateTime.of(LocalDateTime localDateTime, ZoneId zone) {
      final offsetData = TimezoneDatabase.getOffsetForZone(zone.id, localDateTime);
      return ZonedDateTime._(
        localDateTime,
        zone,
        offsetData.offset,
        offsetData.isDst,
      );
    }