DateTime.Value.ToString(format) gives me 12 hour clock
c#
Solution
Why is dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") returning a 12 hour clock timestamp?
Because you're asking for it. That's what `hh` means. `HH` is 24-hour.
When in doubt, read the documentation on custom date and time format strings.
`hh` is documented as
The hour, using a 12-hour clock from 01 to 12."
`HH` is documented as:
The hour, using a 24-hour clock from 00 to 23.
As a further note, this comment suggests a potential conceptual error:
I can see that the DateTime? variable "dateSent" has a 24-hour clock timestamp eg 14:50:34
A `DateTime` value doesn't have a format. It's just a date and time. Just as an `int` with a value of sixteen is both "0x10" and "16" depending on how you format it, the same is true for `DateTime`. There's no format which goes around with the value - the results of just calling `ToString()` will depend on the culture settings.
Problem
An extension of this question, I am pulling a date from a database and displaying it in a grid. I have the following code: ``` string date = ""; DateTime? dateSent; if (row["DateSent"] != DBNull.Value) dateSent = (DateTime)row["DateSent"]; else dateSent = null; date = (dateSent.HasValue ? dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") : null); ``` When I add a breakpoint at the end of this block of code, I can see that the `DateTime?` variable "dateSent" has a 24-hour clock timestamp eg 14:50:34. However, when I check the value of the `string` variable "date" - it has a 12-hour clock format eg 02:50:34. It is not my intention to convert to a 12 hour clock format. I have two questions: - Why is dateSent.Value.ToString("dd/MM/yyyy hh:mm:ss") returning a 12 hour clock timestamp? - How can I avoid this and use the 24-hour clock version?