Ervis Trupja
Ervis Trupja

Reputation: 2800

Why does DateTime.Now to the yyyy-mm-dd format give me incorrect month results?

I want to convert the DateTime.Now to the format of yyyy-mm-dd since that is the only format that i can use in my query that i want to include.
The default format of DateTime.Now looks like 5/1/2008 6:32:06 PM.
If I want to change the format of it to yyyyMMdd I could use this line of code:

var dateString1 = DateTime.Now.ToString("yyyyMMdd");

But, when I try the same for this yyyy-mm-dd format like below:

var dateString2 = DateTime.Now.ToString("yyyy-mm-dd");

the result i get is wrong. For the following lines of code:

var dateString1 = DateTime.Now.ToString("yyyyMMdd");
var dateString2 = DateTime.Now.ToString("yyyy-mm-dd");

Console.WriteLine("yyyyMMdd " + dateString1);
Console.WriteLine("yyyy-mm-dd "+ dateString2);

I get the following result:

enter image description here

which is wrong for the second case.
What am i missing?

Upvotes: 54

Views: 172783

Answers (3)

Bojan B
Bojan B

Reputation: 2111

    var dateString1 = DateTime.Now.ToString("yyyyMMdd");
    var dateString2 = DateTime.Now.ToString("yyyy-MM-dd");

    Console.WriteLine("yyyyMMdd " + dateString1);
    Console.WriteLine("yyyy-MM-dd "+ dateString2);

You are using "mm" instead of "MM" in your second format. mm is for minutes, MM is for month.

Upvotes: 22

Mikhail Tulubaev
Mikhail Tulubaev

Reputation: 4261

According to msdn MM format specifier stands for month and mm - for minutes.

"mm" | The minute, from 00 through 59.

"MM" | The month, from 01 through 12.

So your code should look like the following:

    var dateString1 = DateTime.Now.ToString("yyyyMMdd");
    var dateString2 = DateTime.Now.ToString("yyyy-MM-dd");

    Console.WriteLine("yyyyMMdd " + dateString1);
    Console.WriteLine("yyyy-MM-dd "+ dateString2);

And you will get the desired result

Upvotes: 81

Nigrimmist
Nigrimmist

Reputation: 12386

Your miss is lower-case "m" in second format, that determine MINUTES, but you need "M" instead of "m" for MONTHS.

Upvotes: 5

Related Questions