web-dev-qa-db-ja.com

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

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

119
apeksha

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

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()Patterns

167

DateTimeからは、.TimeOfDayを使用できますが、それは1日の時間(10時間)を表すTimeSpanを提供します。

66
Marc Gravell

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

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

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

48
panpawel

DateTime.ToShortTimeString() メソッドを調べてください。

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

21
heavyd

これを試して:

TimeSpan TodayTime = DateTime.Now.TimeOfDay;
10

次のコードを使用できます。

DateTime dt = new DateTime(2009, 6, 22, 10, 0, 0);  //Date 6/22/2009 10:00:00 AM
string time = dt.ToString("hh:mm tt");              //Output: 10:00 AM
time = dt.ToString("HH:mm tt");                     //Output: 10:00 AM
dt = new DateTime(2009, 6, 22, 22, 0, 0);           //Date 6/22/2009 10:00:00 PM
time = dt.ToString("hh:mm tt");                     //Output: 10:00 PM
time = dt.ToString("HH:mm tt");                     //Output: 22:00 PM
6
Chirag

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

6
tarakaram gopal
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

簡単に書くことができます

string time = dateTimeObect.ToString("HH:mm");
4
Kishan Gupta

これを使用できます

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

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

4
chrysanly

ToString("T")を長時間使用するか、ToString("t")を短時間で使用できます。

3
matsmats

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

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

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}"/>
2
Bipul Roy

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

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

これにはもっと良い方法がありますが、日付を一致させます。

1
Hugoware

私の場合、これはうまくいく

MyDateTime.ToLongTimeString()
0
Leonardo Mora

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

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