Отметка времени в .NET

Мне нужно работать с датами и временем в моем проекте .NET, и одна из вещей, которые мне нужно сделать, это получить текущую дату и добавить к ней 2 недели, и если введенная пользователем дата после этих двух недель выбрасывает ошибка. Или, если дата, которую они ввели, предшествует текущей дате, выдает другую ошибку.

Теперь я знаю, как это сделать, но не так, как .NET обрабатывает даты. На самом деле я работал только с метками времени в прошлом (вероятно, потому что все, что я делал в прошлом, было в Unix), и .NET, похоже, не имеет способа обработки даты или времени с метками времени.

Может ли кто-нибудь сказать мне, как я могу это сделать?

Спасибо.


person Whitey    schedule 25.10.2009    source источник
comment
Вы имеете в виду эквивалент метки времени sql в .NET?   -  person Tarik    schedule 26.10.2009
comment
Ваш вопрос какой-то расплывчатый. Хотите узнать, как использовать класс DateTime или как работать с временными метками Unix? Или что-то совсем другое?   -  person    schedule 26.10.2009
comment
Вопрос достаточно ясен, как проверить, что пользовательский ввод находится в пределах 14-дневного окна.   -  person Henk Holterman    schedule 26.10.2009


Ответы (4)


DateTime value = ...your code...
DateTime today = DateTime.Today, max = today.AddDays(14);
if(value < today || value > max) {
    throw new ArgumentOutOfRangeException("value");
}

Один ключевой момент: обращайтесь к Now / Today только один раз в связанной проверке, иначе вы можете получить очень причудливые результаты ровно в полночь. Крайний крайний случай, может быть...

person Marc Gravell    schedule 25.10.2009

В .NET есть класс DateTime, но я действительно не знаю, что вы подразумеваете под «.NET не имеет способа обработки даты с отметкой времени». Вы имеете в виду способ генерировать временные метки Unix или работать с ними?

Чтобы преобразовать временную метку Unix в DateTime, вы можете сделать это:

DateTime epoch = new DateTime(1970, 1, 1);
epoch = epoch.AddSeconds(timestamp);

Чтобы добавить две недели, вы должны использовать метод AddDays.

person Community    schedule 25.10.2009

Почему бы просто не использовать

if (objUserDate.Date > DateTime.Today.AddDays(14))
{
     //Error 1
}
else if (objUserDate.Date < DateTime.Today)
{
    //Error 2
}
person Maximilian Mayerl    schedule 25.10.2009
comment
+1 За использование DateTime.Today. Если время суток не имеет значения, его не следует включать в расчеты. - person Joren; 26.10.2009

у меня, наверное, было бы что-то вроде этого:

DateTime twoWeeksFromNow = DateTime.Now.AddDays(14);

if(enteredDateTime > twoWeeksFromNow)
{
    throw "ERROR!!!";
}
person John Boker    schedule 25.10.2009