Your code does not produce any error with my localisation
This code will produce AM/PM in the output
MessageBox.Show(dt.ToString("dd/MM/yyyy HH:m:s tt"));
But if you are using dates (especially if they are being used in the context of a database) then you should use unambiguous date formats
e.g.
System.DateTime dt = new System.DateTime();
dt = Convert.ToDateTime("2008-08-01 4:50:50.42");
MessageBox.Show(dt.ToString("yyyyMMddTHH:00:00tt"));
which produces
20080801T04:00:00AM