KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
When a Double is formatted as a string rounding is used. E.g. Console.WriteLine(12345.6.ToString("F0")); outputs 12346 However, when a DateTime is formatted as a string truncation is used. E.g. var ci = CultureInfo.InvariantCulture; var dateTime = DateTime.Parse("2011-09-14T15:18:42.999", ci); Console.WriteLine(dateTime.ToString("o", ci)); Console.WriteLine(dateTime.ToString("s", ci)); Console.WriteLine(dateTime.ToString("yyyy-MM-hhThh:mm:ss.f", ci)); outputs 2011-09-14T15:18:42.9990000 2011-09-14T15:18:42 2011-09-14T15:18:42.9 What is the reasoning (if any) behind this behavior? Rounding to nearest second can be achieved by adding half a second before formatting as a string: var ci = CultureInfo.InvariantCulture; var dateTime = DateTime.Parse("2010-12-31T23:59:59.999", ci); Console.WriteLine(dateTime.ToString("s", ci)); var roundedDateTime = dateTime.AddMilliseconds(500); Console.WriteLine(roundedDateTime.ToString("s", ci)); outputs 2010-12-31T23:59:59 2011-01-01T00:00:00
Tags (comma-separated)
Save Edits
Cancel