将 DateTime.Now 格式化为 yyyy-mm-dd。

52

我想将DateTime.Now转换为yyyy-mm-dd格式,因为这是我要在查询中使用的唯一格式。
DateTime.Now的默认格式看起来像5/1/2008 6:32:06 PM
如果我想将其格式更改为yyyyMMdd,我可以使用以下代码:

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

但是,当我尝试对这个yyyy-mm-dd格式进行相同的操作时,如下所示:

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

我得到的结果是错误的。 对于以下代码行:

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

Console.WriteLine("yyyyMMdd " + dateString1);
Console.WriteLine("yyyy-mm-dd "+ dateString2);
我得到了以下结果:

输入图片说明

对于第二种情况是错误的。
我错过了什么吗?

2
mm 表示分钟。你需要的是 MM,就像你的第一个格式一样。 - uTeisT
这个回答解决了你的问题吗?如何将任何日期格式转换为yyyy-MM-dd - Yousha Aleayoub
3个回答

78
根据msdnMM格式说明符代表月份,mm则代表分钟。

"mm" | 分钟,取值范围为 00 到 59。

"MM" | 月份,取值范围为 01 到 12。

因此,您的代码应该如下所示:
    var dateString1 = DateTime.Now.ToString("yyyyMMdd");
    var dateString2 = DateTime.Now.ToString("yyyy-MM-dd");

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

你将获得期望的结果


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

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

你在第二个格式中使用了"mm"而非"MM"。mm代表分钟,MM代表月份。


谢谢您的解决方案。这解决了我的问题,但 @Mikhail解释了原因,所以我接受了他的答案并赞同了您的回答。谢谢 - etrupja

5

您的错别字是第二种格式中小写的“m”,它表示分钟,但是您需要使用大写的“M”来表示月份。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接