Мне нужно округлить часы на основе минут в переменной DateTime. Условие: если минуты меньше 30, минуты должны быть установлены на ноль и не будут меняться в часах, иначе если минуты >= 30, то часы должны быть установлены на часы + 1, а минуты снова установлены на ноль. Секунды игнорируются.
Пример:
11/08/2008 04:30:49
должно стать 11/08/2008 05:00:00
и 11/08/2008 04:29:49
должны стать 11/08/2008 04:00:00
Я написал код, который отлично работает, но просто хотел узнать лучший метод, если бы его можно было написать, а также оценил бы альтернативный метод (ы).
string date1 = "11/08/2008 04:30:49";
DateTime startTime;
DateTime.TryParseExact(date1, "MM/dd/yyyy HH:mm:ss", null,
System.Globalization.DateTimeStyles.None, out startTime);
if (Convert.ToInt32((startTime.Minute.ToString())) > 29)
{
startTime = DateTime.Parse(string.Format("{0}/{1}/{2} {3}:{4}:{5}",
startTime.Month.ToString(), startTime.Day.ToString(),
startTime.Year.ToString(), startTime.Hour.ToString(), "00", "00"));
startTime = startTime.Add(TimeSpan.Parse("01:00:00"));
Console.WriteLine("startTime is :: {0}",
startTime.ToString("MM/dd/yyyy HH:mm:ss"));
}
else
{
startTime = DateTime.Parse(string.Format("{0}/{1}/{2} {3}:{4}:{5}",
startTime.Month.ToString(),
startTime.Day.ToString(), startTime.Year.ToString(),
startTime.Hour.ToString(), "00", "00"));
Console.WriteLine("startTime is :: {0}",
startTime.ToString("MM/dd/yyyy HH:mm:ss"));
}