Reputation:
I am getting the current time and trying to split it into two separate variables. I want the time to be in 12 hours not 24
When i do this the first and second variable are the same. How can i fix this?
int hour = DateTime.Now.Hour % 12;
if (hour == 0) hour = 12;
then,
FirstDigitHour = hour / 10;
secondDigitHour = hour % 10;
the time here is 6 pm so FirstDigitHour & secondDigitHour both = 6
the first digit should equal 0
Upvotes: 0
Views: 127
Reputation: 5569
Wouldn't this satisfy your need better
var x = DateTime.Now.ToString("hh");
it returns a string with hours in 12 hour format ( e.g. "01" or "02" ... "11" "12" )
Then you can just get the first and second digit like so
int firstDigit = Convert.ToInt32(x[0].ToString());
int secondDigit = Convert.ToInt32(x[1].ToString());
Upvotes: 3
Reputation: 19733
If you're trying to format the time for display, I would advise you use the proper format string:
DateTime.Now.ToString("hh tt")
Which is the time in 2-digit 12-hour format (hh) with AM/PM (tt)
See the documentation:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
Upvotes: 7
Reputation: 108937
Seems to work fine for me.
int hr = 18; // 6pm
int hour = hr % 12;
if (hour == 0)
hour = 12;
int fd = hour/10;
int ld = hour%10;
in this case I have fd = 0
and ld = 6
.
See it run.
Upvotes: 2
Reputation: 5146
Check if there is a second digit first... if DateTime.Now.Hour > 10. Then you have it.
Upvotes: 0