日時C#から時間のみを取得する方法[終了]


144

2009年6月22日の午前10:00:00という値があるとします。この日時から午前10:00だけを取得するにはどうすればよいですか。


15
これは文字列ですか、それともDateTimeですか?
コリンバーネット、

回答:


202

これには多くのオプションがあります。

DateTime dt = DateTime.Parse("6/22/2009 07:00:00 AM");

dt.ToString("HH:mm"); // 07:00 // 24 hour clock // hour is always 2 digits
dt.ToString("hh:mm tt"); // 07:00 AM // 12 hour clock // hour is always 2 digits
dt.ToString("H:mm"); // 7:00 // 24 hour clock
dt.ToString("h:mm tt"); // 7:00 AM // 12 hour clock

役立つリンク: DateTime.ToString()パターン


16
@MetroSmurf-OPはもちろん、彼が何をしたいのか明確ではありません。私のペットの嫌いの1つは、文字列に早く行くことです。私はすべてを文字列に変換する同僚がいました-ダブルスなども。それは起こるのを待っている事故です。オブジェクトを人間に表示するまで、オブジェクトを文字列に変換しないでください。それまでは、オブジェクトに固執してください。
ポール、2014

1
クイックリファレンスとしてss、先行ゼロのsある秒となしの秒です
Beevee

これまでのベストアンサー
Tk1993

76

から、DateTime使用できます.TimeOfDayが、これによりTimeSpan1日の時間(10時間)を表すことができます。


またはToString( "format code")のFormattingを使用した特殊なケース
kenny

61

C#にはDateTimeタイプのみがあり、日付部分と時刻部分の両方で構成されています。DateTimeのDate部分を気にしない場合は、次のようにデフォルト値に設定します。

DateTime myTime = default(DateTime).Add(myDateTime.TimeOfDay)

これにより、Microsoftが基準日を1/1/0001以外に変更することを決定した場合でも、.NETのすべてのバージョンで一貫性を保つことができます。


19
これは受け入れられる答えになるはずです。問題は、文字列としてフォーマットするのではなく、DateTimeから時間を抽出することでした。
ASalazar

具体的には、「C#」ではなく「.NET」です。
rory.ap

22

あなたはDateTime.ToShortTimeString()を調べたいかもしれませんメソッド。

また、DateTimeオブジェクトには他にも多くのメソッドとプロパティがあり、好きな方法で日付や時刻をフォーマットするのに役立ちます。ドキュメントをご覧ください。


+1現在のシステムに設定されている形式で時刻を返すため、時刻出力のローカライズが必要な国際環境で実行している場合、これは最もクリーンなソリューションです。
aggaton


6

それにはさまざまな方法があります。DateTime.Now.ToLongTimeString()文字列形式で時刻のみを返すwhich を使用できます。


あなたはおそらくDateTime.ToLongTimeString()よりもむしろ意味しましたDateTime.Now.ToLongTimeString()。このスレッドの古さを考えると、応答が以前の回答より大幅に改善されない限り、復活しないことをお勧めします。
リー


5

これを使えます

lblTime.Text = DateTime.Now.TimeOfDay.ToString(); 

ミリ秒の値を持つリアルタイムであり、時間のみに設定されます。


TimeOfDayは良い方法ですが、ミリ秒の部分もあるため、標準型で時間をフォーマットする必要があります。
sajadre

5
DateTime now = DateTime.Now;

now.ToLongDateString();    // Wednesday, January 2, 2019
now.ToLongTimeString();    // 2:33:59 PM
now.ToShortDateString();   // 1/2/2019
now.ToShortTimeString();   // 2:16 PM
now.ToString();            // 1/2/2019 2:33:59 PM

4

これは私にとってはうまくいきます。日付の部分のみを取得するためにDateTime.Dateを操作する必要があったときに、それを発見しました。

var wholeDate = DateTime.Parse("6/22/2009 10:00:00 AM");
var time = wholeDate - wholeDate.Date;


2

gridviewを使用している場合、DataFormatString="{0:t}" 例では時間のみを表示できます。

    By bind the value:-
<asp:Label ID="lblreg" runat="server" Text='<%#Eval("Registration_Time ", "{0:t}") %>'></asp:Label>

By bound filed:-
<asp:BoundField DataField=" Registration_Time" HeaderText="Brithday" SortExpression=" Registration Time " DataFormatString="{0:t}"/>

1

日付ではなく時間を比較する場合は、次のように、標準の比較日付を使用するか、使用している日付と一致させることができます。

DateTime time = DateTime.Parse("6/22/2009 10:00AM");
DateTime compare = DateTime.Parse(time.ToShortDateString() + " 2:00PM");
bool greater = (time > compare);

これにはより良い方法があるかもしれませんが、日付を一致させます。


1

DateTime Kindも考慮する必要があります。

public static DateTime GetTime(this DateTime d)
{
    return new DateTime(d.TimeOfDay.Ticks, d.Kind);
}

この質問に答える意味はありません。9年前に尋ねられました。また、この質問にはすでに多くの良い答えがあります。
benshabatnoam

あなたは時間を返していません。回答を確認してください
Yepeekai 2018年

@Yepeekai .NETにはTimeクラスがありません。したがって、Date部分のないDateTimeインスタンスは、実行できるオプションの1つです。文字列を返すこともできますが、DateTimeオペレーションで使用できます。TimeSpanも検討できると思います。
user3720899

「新しいDateTime(d.TimeOfDay.Ticks)」は今のところ最もきれいな答えです
Fabianus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.