Звучит так, как будто вам нужно взять границы вашего местного времени, например, начало местного дня, конвертируйте их в UTC, а затем фильтруйте по ним.
Обратите внимание, что ваш первоначальный пример показывает только первую половину 6 июля - с 12:00 до 12:00. Непонятно, хочешь ли ты этого.
Имейте в виду, что в некоторых часовых поясах не все дни начинаются в полночь - если изменение DST происходит, когда в полночь наступит , день может фактически начаться в 1 час ночи.
РЕДАКТИРОВАТЬ: Просто чтобы быть ясно ...
Вам нужно каким-то образом получить год, месяц и день от пользователя. Если это указано в пользовательском интерфейсе, вы можете использовать этот код:
DateTime localDate = new DateTime(year, month, day, 0, 0, 0,
DateTimeKind.Unspecified);
В противном случае вам понадобится что-то вроде:
// Work out the current date in the *user's* time zone
DateTime localDate = TimeZoneInfo.ConvertTime(DateTime.UtcNow, timeZone).Date;
// And then convert that "start of day" back to UTC
DateTime utcStart = TimeZoneInfo.ConvertTimeToUtc(localDate, timeZone);
DateTime utcEnd = TimeZoneInfo.ConvertTimeToUtc(localDate.AddDays(1),
timeZone);
Обратите внимание, что это не учитывает часовые пояса, где не всегда бывает полночь.