.net日期时间格式隐藏时间,如果午夜

本文关键字:时间 如果 午夜 格式 日期 net 隐藏 | 更新日期: 2023-09-27 18:04:28

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

M/dd/yyyy HH: mm: ss

,它按照我希望的方式打印,除了以下几点:如果时间是午夜,我想完全隐藏HH:mm:ss。

是否可以不使用自定义信息提供程序?

谢谢!

.net日期时间格式隐藏时间,如果午夜

DateTime time = DateTime.Now; 
string txt = time.ToString(time == time.Date ? "M/dd/yyyy" : "M/dd/yyyy HH:mm:ss");
DateTime time = DateTime.Now; 
string format = "";
if (time.Hour == 0) 
{
   format = "M/dd/yyyy";
} 
else 
{
   format = "M/dd/yyyy HH:mm:ss";
}

@JDunkerley提出的解决方案的文化独立版本是:

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

关于标准日期和时间格式字符串的更多信息请点击此处。

提出的解决方案不是一个很好的解决方案,因为它没有考虑到用户的本地化时间格式,并且简单地假设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();
    }
}