.net DateTime格式化隐藏时间如果是午夜?

时间:2011-08-03 13:46:13

标签: c# .net datetime formatting

我正在设计格式化日期时间以显示在图表上,并且它到目前为止工作得很好。我有格式字符串:

M / dd / yyyy HH:mm:ss

除了以下内容之外我会按照我的喜好进行打印:如果时间是午夜,我想完全隐藏HH:mm:ss。

是否可以不使用自定义iformatprovider?

谢谢!

4 个答案:

答案 0 :(得分:8)

DateTime time = DateTime.Now; 
string txt = time.ToString(time == time.Date ? "M/dd/yyyy" : "M/dd/yyyy HH:mm:ss");

答案 1 :(得分:3)

DateTime time = DateTime.Now; 

string format = "";

if (time.Hour == 0) 
{
   format = "M/dd/yyyy";
} 
else 
{
   format = "M/dd/yyyy HH:mm:ss";
}

答案 2 :(得分:3)

@JDunkerley提出的与文化无关的解决方案版本将是:

DateTime time = DateTime.Now;
string txt = time.ToString(time == time.Date ? "d" : "g");

有关标准日期和时间格式字符串here的更多信息。

答案 3 :(得分:0)

建议的解决方案不是很好,因为它没有考虑用户的本地化时间格式,只是假设US English

以下是它应该如何完成的:

public static string formatDateTimeWithTimeIfNotMidnight(DateTime dt)
{
    //RETURN:
    //      = String for 'dt' that will have time only if it's not midnight

    if (dt != dt.Date)
    {
        //Use time
        return dt.ToString();
    }
    else
    {
        //Only date
        return dt.ToShortDateString();
    }
}