По умолчанию час в строке формата для DateTime преобразует 0 в 12. Например, если у вас есть
DateTime dt = new DateTime(1999, 1, 1, 0, 0, 0);
string s = dt.ToString("h:mm:ss");
значение s будет "12: 0: 0", а не "0: 0: 0". Есть ли способ получить "0:00:00" вместо?
Try
string s = dt.ToString("H:mm:ss");
Здесь ссылка .
Вы были близки, попробуйте использовать это вместо:
string s = dt.ToString("H:mm:ss");
string s = (dt.Hour >= 12 ? dt.Hour - 12 : dt.Hour).ToString() +
dt.ToString(":mm:ss");
По-видимому, это было не то, что вы искали. То, как я читал ваше сообщение, вы хотели, чтобы 12-часовые часы переводили "12:00" в "0:00" (некоторые международные часы делают это), что и получается. Для этого поведения нет строки формата, поэтому вам нужно создать строку самостоятельно.
Вы также можете прочитать строки DateTime
формата здесь.
Вместо "h: mm: ss" используйте "H: mm: ss"
Вам нужно использовать капитал H вместо строчного h внутри метода ToString.
т.е.
DateTime dt = new DateTime (1999, 1, 1, 0, 0, 0); string s = dt.ToString( "H: mm: ss" );