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

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

2 голосов
/ 26 октября 2009

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

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

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

Спасибо.

Ответы [ 6 ]

4 голосов
/ 26 октября 2009
DateTime value = ...your code...
DateTime today = DateTime.Today, max = today.AddDays(14);
if(value < today || value > max) {
    throw new ArgumentOutOfRangeException("value");
}

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

1 голос
/ 26 октября 2009

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

if (objUserDate.Date > DateTime.Today.AddDays(14))
{
     //Error 1
}
else if (objUserDate.Date < DateTime.Today)
{
    //Error 2
}
1 голос
/ 26 октября 2009
            // Whatever class is able to retrieve the date the user just entered
            DateTime userDateTime = Whatever.GetUserDateTime();
            if (userDateTime > DateTime.Now.AddDays(14))
                throw new Exception("The date cannot be after two weeks from now");
            else if (userDateTime < DateTime.Now)
                throw new Exception("The date cannot be before now");
1 голос
/ 26 октября 2009

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

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

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

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

0 голосов
/ 26 октября 2009

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

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

if(enteredDateTime > twoWeeksFromNow)
{
    throw "ERROR!!!";
}
0 голосов
/ 26 октября 2009
var userInputDate = DateTime.Parse(someInput);

if(userInputDate > DateTime.Now.AddDays(14)) throw new ApplicationException("Dont like dates after 2 weeks of today");
if(userInputDate < DateTime.Now) throw new ApplicationException("Date shouldnt be before now, for some reason");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...