var datetimeOffsetNow = DateTimeOffset.Now;
Console.WriteLine("DateTimeOffset.Now");
Console.WriteLine(datetimeOffsetNow);
Console.WriteLine("Offset = {0}", datetimeOffsetNow.Offset);
Console.WriteLine("DateTime = {0}", datetimeOffsetNow.DateTime);
Console.WriteLine("LocalDateTime = {0}", datetimeOffsetNow.LocalDateTime);
Console.WriteLine("UtcDateTime = {0}", datetimeOffsetNow.UtcDateTime);

//> DateTimeOffset.Now
//> 9/3/2019 8:40:48 AM -05:00
//> Offset = -05:00:00
//> DateTime = 9/3/2019 8:40:48 AM
//> LocalDateTime = 9/3/2019 8:40:48 AM
//> UtcDateTime = 9/3/2019 1:40:48 PM


var datetimeOffsetUtcNow = DateTimeOffset.UtcNow;
Console.WriteLine("DateTimeOffset.UtcNow");
Console.WriteLine(datetimeOffsetNow);
Console.WriteLine("Offset = {0}", datetimeOffsetUtcNow.Offset);
Console.WriteLine("DateTime = {0}", datetimeOffsetUtcNow.DateTime);
Console.WriteLine("LocalDateTime = {0}", datetimeOffsetUtcNow.LocalDateTime);
Console.WriteLine("UtcDateTime = {0}", datetimeOffsetUtcNow.UtcDateTime);

//> DateTimeOffset.UtcNow
//> 9/3/2019 8:40:48 AM -05:00
//> Offset = 00:00:00
//> DateTime = 9/3/2019 1:40:48 PM
//> LocalDateTime = 9/3/2019 8:40:48 AM
//> UtcDateTime = 9/3/2019 1:40:48 PM

// DateTimeOffset: DST-aware (if timezones are loaded)
var datetimeOffsetLocal = new DateTimeOffset(new DateTime(2019,1,1));
Console.WriteLine("new DateTimeOffset(new DateTime(2019,1,1))");
Console.WriteLine(datetimeOffsetLocal);
Console.WriteLine("Offset = {0}", datetimeOffsetLocal.Offset);
Console.WriteLine("DateTime = {0}", datetimeOffsetLocal.DateTime);
Console.WriteLine("LocalDateTime = {0}", datetimeOffsetLocal.LocalDateTime);
Console.WriteLine("UtcDateTime = {0}", datetimeOffsetLocal.UtcDateTime);

//> new DateTimeOffset(new DateTime(2019,1,1))
//> 1/1/2019 12:00:00 AM -06:00
//> Offset = -06:00:00
//> DateTime = 1/1/2019 12:00:00 AM
//> LocalDateTime = 1/1/2019 12:00:00 AM
//> UtcDateTime = 1/1/2019 6:00:00 AM