1058 shaares
75 liens privés
75 liens privés
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);
}
}