2011-08-03 12 views
3

私はグラフに表示するためにdatetimeの書式設定に取り組んでいます。.net DateTimeフォーマットは真夜中の時間を隠すか?

M/DD/YYYY HH:mm:ssの

と私はそれが次を除く外したいと、それが印刷されます。私は完全にHHを非表示にする:mm:ssの場合、私は、書式文字列を持っています時間は真夜中です。

カスタムiformat提供者なしで行うことはできますか?

ありがとうございます!

+0

あなただけの真夜中をチェックし、「M/DD/YYYY」にフォーマット文字列を変更することができませんか? – Polyfun

+0

深夜をスキップすることはできません... –

+1

非常に大量のデータがない限り、最も近い秒に四捨五入された深夜に起こったエントリが多数あるとは思われません。あなたが確かに日付を表​​示しているにも関わらず、特に深夜に起こったことを知らせるために十分な情報をユーザに伝えない。それは自分自身だ – Coops

答えて

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

クリーン、私はそれが好きです – Coops

+0

私はprollyこれを使用して終了します。完璧な解決策ではありません(マイクロソフトのチャートパッケージでは、余分なコードを追加することなく選択的な書式設定ができません)。しかし、私はそのベストソリューションだと思います。ありがとう! – greggorob64

+3

使用しないでください。これは '米国英語 'の時間形式を前提としています。 – c00000fd

3
DateTime time = DateTime.Now; 

string format = ""; 

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

これは例えば "00:12:34"の時間を隠すでしょう。 – Carra

+0

@カラ:それは真夜中に時間を隠すための元の質問のポイントだった。 –

+1

真夜中の2分後は真夜中ではなく、時間も隠されます。私は真夜中を "time == time.Date"でチェックします。 – Carra

3

あろう@JDunkerleyによって提案された解決策の培養に依存しないバージョン:

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

標準日時書式文字列hereについて詳しく。

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(); 
    } 
} 
関連する問題