Разбор экземпляра DateTime - PullRequest
       0

Разбор экземпляра DateTime

1 голос
/ 29 апреля 2011

Я получил класс с некоторыми методами времени.Теперь мне нужно добавить к этому методу следующее:

    public static string LastUpdated(DateTime date)
    {
        string result = string.Empty;

        //check if date is sometime "today" and display it in the form "today, 2 PM"
        result = "today, " + date.ToString("t");

        //check if date is sometime "yesterday" and display it in the form "yesterday, 10 AM"
        result = "yesterday, " + date.ToString("t");

        //check if the day is before yesterday and display it in the form "2 days ago"
        result = ... etc;

        return result;
    }

Есть идеи?

Ответы [ 5 ]

3 голосов
/ 29 апреля 2011

Я недавно ответил на аналогичный вопрос и опубликовал метод расширения:

Расчет относительных дат с использованием asp.net mvc

Первоначальный источник ссылка

2 голосов
/ 29 апреля 2011

Ну ... ты можешь сделать это ...

if (date.Date == DateTime.Today) {
    result = "today, " + date.ToString("t");
} else if (date.Date.Day == DateTime.Today.AddDays(-1).Day) {
    result = "yesterday, " + date.ToString("t");
} else {
    result = (new TimeSpan(DateTime.Now.Ticks).Days - new TimeSpan(date.Ticks).Days) + " days ago";
}

Надеюсь, это поможет.

2 голосов
/ 29 апреля 2011

Взгляните на это:

Рассчитать относительное время в C #

Вот как они это делают в StackOverflow. Это должно привести вас в правильном направлении.

1 голос
/ 29 апреля 2011

Вы можете рассчитать разницу во времени между датой и наступающей полуночью и получить ее за целые дни. Отсюда легко перевести его в читабельный текст:

int days = Math.Floor((DateTime.Today.AddDays(1) - date).TotalDays);
switch (days) {
  case 0: return "today, " + date.ToString("t");
  case 1: return "yesterday, " + date.ToString("t");
  default: return days.ToString() + " days ago";
}

Примечание: коммутатор не обрабатывает будущие даты. Для этого вам нужно проверить наличие отрицательных значений.

0 голосов
/ 29 апреля 2011

Я не собираюсь кодировать это для вас, но скажу, что вы должны взглянуть на класс TimeSpan, а также взглянуть на Пользовательское форматирование даты и времениСтраница в MSDN, в которой рассказывается, как можно использовать .ToString() с объектом DateTime.

Вам следует проверить, не старше ли даты 1 день (или 2, или 3 или что-то еще)и затем верните соответствующую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...