Проверьте, является ли дата этой датой или больше

Может быть интересно, что такое поведение может быть «решено». Используйте два интерфейса: базовый неуниверсальный интерфейс и универсальный интерфейс. Тогда компилятор знает, что все функции базового неуниверсального интерфейса не являются универсальными, и будет обрабатывать их следующим образом.

Это поведение очень раздражает, если использовать потоки и цепочку функций, и поэтому я решаю это следующим образом.

Использование через наследование интерфейса :

public interface GenericInterface<X extends Y> extends BaseInterface
{
    X getValue();
}

public interface BaseInterface
{
    String getStringValue();
}

Теперь вы можете выполнять следующие действия без предупреждения и без проблем:

GenericInterface object = ...;
String stringValue = object.getStringValue();
6
задан juan 10 June 2009 в 23:07
поделиться

3 ответа

Что вы хотите сделать? Согласно вашему тексту вы хотите узнать, наступает ли данная дата сегодня или позже, но в примере кода сравнивается только месяц (что означает, что июнь этого года совпадает с июнем прошлого года). Если вы хотите сравнить дату (включая год и день), это сравнение поможет вам:

yourDate.Date >= DateTime.Now.Date
26
ответ дан 8 December 2019 в 04:09
поделиться

Какой провайдер здесь? LINQ-to-SQL? Объекты? Entity Framework? (судя по названию, похоже, что LINQ-to-SQL ...)

Действительно, поставщики баз данных не смогут обработать ваш метод; у вас есть несколько вариантов:

  • встроить его: && d.EndDate.Month> = System.DateTime.Now.Month
  • сопоставить его с UDF (только LINQ-to-SQL), который принимает DateTime

Первый вариант, вероятно, проще ... если у вас возникнут проблемы с распознаванием System.DateTime.Now.Month, сначала сделайте это в переменной.

0
ответ дан 8 December 2019 в 04:09
поделиться

Это только проверка того, что месяц больше текущего, поэтому 4 июля 1776 года пройдет. Я полагаю, вы хотите проверить всю дату? Сделайте это:

    var q = (from d in data.DateDetails
             where d.Activate == 1 && d.EndDate > DateTime.Now) 
             orderby d.Date.Date.Month descending
             select new DateItem
             {
                 Title = d.Title,
                 Date = d.Date.Date + " - " + d.EndDate.Date,
                 Link = d.Link,
             }).Take(3);

Еще пара пунктов:

        if (month < System.DateTime.Now.Month)
        {
            return true;
        }
        else if (month == System.DateTime.Now.Month)
        {
            return true;
        }
        else
        {
            return false;
        }

То же, что: return month> = System.DateTime.Now;

Я должен сказать почти то же самое, так как вы без необходимости вызываете DateTime.Now дважды, и вы можете получить отдельные значения. Вызовите DateTime.Now один раз и поместите его в переменную, чтобы гарантировать, что вы постоянно проверяете одно и то же время.

0
ответ дан 8 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: