public static void Main()
var now = DateTimeOffset.UtcNow;
var christmasIslands = TimeZoneInfo.FindSystemTimeZoneById("Pacific/Enderbury");
var hawaii = TimeZoneInfo.FindSystemTimeZoneById("Pacific/Honolulu");
Console.WriteLine("Christmas Islands");
Console.WriteLine(now.ToDateOnly(christmasIslands));
Console.WriteLine("Hawaii");
Console.WriteLine(now.ToDateOnly(hawaii));
public static class DateOnlyExtensions {
public static DateTimeOffset ToDateTimeOffset(this DateOnly dateOnly, TimeZoneInfo zone) {
var dateTime = dateOnly.ToDateTime(new TimeOnly(0));
return new DateTimeOffset(dateTime, zone.GetUtcOffset(dateTime));
public static DateOnly ToDateOnly(this DateTimeOffset dto, TimeZoneInfo zone) {
var inTargetZone = TimeZoneInfo.ConvertTime(dto, zone);
return DateOnly.FromDateTime(inTargetZone.Date);