Что я пытаюсь сделать:
Я пытаюсь отключить телепередачи из файла XML на текущий час. Например, время сейчас 14:00, я хочу отключить все списки со всех каналов в этот текущий час.
Ниже приводится текущая дата, которая сопоставляется с файлами XMl и отображаются все совпадения. Я хочу сделать то же самое для текущего часа.
Если изменить метод на приведенный ниже, я получаю эту ошибку:
Ошибка 1 Оператор '==' не может быть применен к операндам типа 'System.DateTime' и 'int'
bool MyDateCheckingMethod(string dateString)
{
DateTime otherDate = DateTime.ParseExact(dateString, "yyyyMMddHHmmss K", null);
// Is this today (ignoring time)?
return otherDate.Date == DateTime.Now.Hour;
}
Это то, что я сейчас использую для отображения к сегодняшней дате, и оно отлично работает.
bool MyDateCheckingMethod(string dateString)
{
DateTime otherDate = DateTime.ParseExact(dateString, "yyyyMMddHHmmss K", null);
// Is this today (ignoring time)?
return otherDate.Date == DateTime.Now.Date;
}
Вот еще код, чтобы сделать его немного понятнее.
void c_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
return;
var r = XDocument.Parse(e.Result);
listBox2.ItemsSource = from tv in r.Root.Descendants("programme")
where tv.Attribute("channel").Value == "1200"
where MyDateCheckingMethod(tv.Attribute("start").Value)
let channelE1 = tv.Attribute("channel")
let startE1 = tv.Attribute("start")
let nameEl = tv.Element("title")
orderby tv.Attribute("start").Value ascending
let urlEl = tv.Element("desc")
select new TV1guide
{
DisplayName = nameEl == null ? null : nameEl.Value,
ChannelName = channelE1 == null ? null : channelE1.Value,
ChannelURL = urlEl == null ? null : urlEl.Value,
StartTime = startE1 == null ? (DateTime?)null : DateTime.ParseExact(startE1.Value, "yyyyMMddHHmmss zzz", DateTimeFormatInfo.CurrentInfo, DateTimeStyles.AssumeLocal),
};