Quotidien Shaarli

Tous les liens d'un jour sur une page.

December 6, 2022

Note:

DateTime dateTime = DateTime.Now;

Console.WriteLine($"{dateTime.Kind} - {dateTime}");

string ianaParis = "Europe/Paris";
string ianaHavana = "America/Havana";

var i = dateTime.ToInstant(ianaParis);
Console.WriteLine(i);
Console.WriteLine(i.ToZoned(ianaParis));
Console.WriteLine(i.ToZoned(ianaHavana));

public static class Extensions
{
public static Instant ToInstant(this DateTime dateTime, string iana)
{
if (dateTime.Kind != DateTimeKind.Local)
{
throw new ArgumentException("Expected local kind of DateTime");
}

        var tz = DateTimeZoneProviders.Tzdb[iana];

        global::System.Console.WriteLine(DateTimeZoneProviders.Tzdb.VersionId);
        var local = dateTime.ToLocalDateTime();
        ZonedDateTime z = local.InZoneStrictly(tz);
        return z.ToInstant();
    }

    public static ZonedDateTime ToZoned(this Instant instant, string iana)
    {
        var tz = DateTimeZoneProviders.Tzdb[iana];
        return instant.InZone(tz);
    }
}