user249375
user249375

Reputation:

Get correct time

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

Answers (4)

ingo
ingo

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

Xavier Poinas
Xavier Poinas

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

Bala R
Bala R

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

soandos
soandos

Reputation: 5146

Check if there is a second digit first... if DateTime.Now.Hour > 10. Then you have it.

Upvotes: 0

Related Questions