Search code examples
c#.netdatedatetime

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?


Solution

  • 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