Класс, вычисляющий разницу в датах - проверить корректность реализации кода - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую! Цель - написать класс, который будет преобразовывать полученную дату/время, рассчитывать разницу между этой датой/временем и их текущим значением, и выводить строку вида "1 минуту назад". Этот класс в дальнейшем буду использовать на веб-сайте для вывода даты/времени новости. Чтобы была более понятна цель приведу пример: Текущее время 15:11, время размещения новости 15:10, значит нужно вывести "1 минуту назад". Собственно написал и протестировал сам класс. Хотелось бы услышать мнение опытных программистов по поводу оформления кода, возможно советы по доработке, ну и может быть кому-то пригодится сам код Код моего класса:
class MyClass
    {
        public string SetDateTime(DateTime DT)
        {
            string result = "";
            DateTime DT_now = DateTime.Now;
 
            if (DT.Date == DT_now.Date) //Если дата сегодняшняя
            {
                if (DT.TimeOfDay > DT_now.AddHours(-1).TimeOfDay) //Если время меньше текущего на 1 ЧАС или меньше
                {
                    if (DT.TimeOfDay > DT_now.AddMinutes(-1).TimeOfDay) //Если время меньше текущего на 1 МИНУТУ или меньше
                    {
                        if (DT.TimeOfDay > DT_now.AddSeconds(-1).TimeOfDay) //Если время меньше текущего на 1 СЕКУНДУ или меньше
                        {
                            result = "Только что";
                        }
                        else
                        {
                            byte seconds = Convert.ToByte((DT_now - DT).Seconds);
                            result = String.Format("{0} секунд{1} назад", seconds, SetTimeEnding(seconds));
                        } 
                    }
                    else
                    {
                        byte minutes = Convert.ToByte((DT_now - DT).Minutes);
                        result = String.Format("{0} минут{1} назад", minutes, SetTimeEnding(minutes));
                    }
                }
                else
                {
                    result = "Сегодня в " + DT.ToShortTimeString();
                }    
            }
            else
            {
                if (DT.Date == DT_now.Date.AddDays(-1))
                {
                    result = "Вчера в " + DT.ToShortTimeString();
                }
                else
                {
                    result = DT.ToShortDateString();
                }
            }
 
            return result;
        }
 
        private string SetTimeEnding(byte time)
        {
            string result = "";
 
            byte[] for_time_end_1 = new byte[5] { 1, 21, 31, 41, 51 };
            byte[] for_time_end_2 = new byte[15] { 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54 };
 
            if (for_time_end_1.Contains(time))
            {
                result = "у"; 
            }
            else
            {
                if (for_time_end_2.Contains(time))
                {
                    result = "ы"; 
                }
            }
 
            return result;
        }
    }
Код для тестирования работы моего класса:
MyClass mc = new MyClass();
 
DateTime d1 = new DateTime(2014, 8, 4);
DateTime d2 = new DateTime(2014, 8, 7);
DateTime d3 = new DateTime(2013, 8, 4);
DateTime d_today = new DateTime();     
DateTime d_yesterday = new DateTime();
 
d_today = DateTime.Now;
d_yesterday = DateTime.Now.AddDays(-1);
 
Console.WriteLine(d1 + " - " + mc.SetDateTime(d1));
Console.WriteLine(d2 + " - " + mc.SetDateTime(d2));
Console.WriteLine(d3 + " - " + mc.SetDateTime(d3));
Console.WriteLine(d_today + " - " + mc.SetDateTime(d_today));
Console.WriteLine(d_yesterday + " - " + mc.SetDateTime(d_yesterday));
 
for (byte i = 0; i <= 60; i++)
{
     Console.WriteLine("{0} - {1} - {2}", i, mc.SetDateTime(DateTime.Now.AddSeconds(-1 * i)), mc.SetDateTime(DateTime.Now.AddMinutes(-1 * i)));
}
 
Console.ReadLine()
Использованные сборки:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

Решение задачи: «Класс, вычисляющий разницу в датах - проверить корректность реализации кода»

textual
Листинг программы
private string SetTimeEnding(int time)
{     if((time/10)%10==1) return "";
      int tmp = time%10;
      return (tmp ==1)? "у":(((tmp-4)>0 )? "": "ы"); 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы