Ho bisogno di arrotondare le ore in base ai minuti in una variabile DateTime. La condizione è: se i minuti sono inferiori a 30, i minuti devono essere impostati su zero e nessuna modifica alle ore, altrimenti se minuti> = 30, quindi le ore devono essere impostate su ore + 1 e i minuti sono nuovamente impostati su zero. I secondi vengono ignorati.Come arrotondare le ore in base al processo verbale (ore + 0 se min <30, ore + 1 altrimenti)?
esempio: 11/08/2008 04:30:49
dovrebbe diventare 11/08/2008 05:00:00
e 11/08/2008 04:29:49
dovrebbe diventare 11/08/2008 04:00:00
Ho scritto il codice che funziona perfettamente bene, ma volevo solo sapere un metodo migliore se potrebbe essere scritto e anche apprezzerebbe metodo alternativo (S).
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"));
}
Grazie a tutti per le discussioni utili e post. :-) –
Sono accettabili anche suggerimenti da Russell_Steen, Hans_Kesting e Hojo. –
possibile duplicato di [C'è un modo migliore per tagliare un DateTime con una precisione specifica?] (Http://stackoverflow.com/questions/152774/is-there-a-better-way-to-trim-a-datetime -a-una-precisione-specifica) –