Класс, вычисляющий разницу в датах - проверить корректность реализации кода - 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 )? "": "ы"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д