public static void Main()
var inputStart = new DateTimeOffset(DateTimeOffset.UtcNow.Date + new TimeSpan(20, 0, 0), new TimeSpan(0, 0, 0));
var inputEnd = new DateTimeOffset(DateTimeOffset.UtcNow.Date + new TimeSpan(20, 30, 0), new TimeSpan(0, 0, 0));
Console.WriteLine("inputStart: " + inputStart);
Console.WriteLine("inputEnd:" + inputEnd);
var startTime = new TimeSpan(5, 0, 0);
var endTime = new TimeSpan(6, 0, 0);
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
Console.WriteLine("inputStart.Japan: " + inputStart.ToOffset(timeZone.BaseUtcOffset));
Console.WriteLine("inputEnd.Japan: " + inputEnd.ToOffset(timeZone.BaseUtcOffset));
var date = inputStart.ToOffset(timeZone.BaseUtcOffset).Date;
Console.WriteLine("date: " + date);
var periodStartSystem = date + startTime;
var periodEndSystem = date + endTime;
Console.WriteLine("periodStartSystem: " + periodStartSystem);
Console.WriteLine("periodEndSystem: " + periodEndSystem);
var periodStart = new DateTimeOffset(date, new TimeSpan(9, 0, 0)) + startTime;
var periodEnd = new DateTimeOffset(date, new TimeSpan(9, 0, 0)) + endTime;
Console.WriteLine("periodStart: " + periodStart);
Console.WriteLine("periodEnd: " + periodEnd);
Console.WriteLine("DateTime: " + (inputStart.CompareTo(periodEndSystem) < 0 && inputEnd.CompareTo(periodStartSystem) > 0));
Console.WriteLine("DateTimeOffset(Japan):" + (inputStart.CompareTo(periodEnd) < 0 && inputEnd.CompareTo(periodStart) > 0));