it-roy-ru.com

Как получить только время из даты и времени C #

Предположим, у меня есть значение 22.06.2009 10:00:00. Как мне получить только 10:00 утра с этой даты времени.

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

160
Theofanis Pantelides

Из DateTime вы можете использовать .TimeOfDay - но это дает вам TimeSpan, представляющее время дня (10 часов).

61
Marc Gravell

В C # есть только тип DateTime, и он состоит из части даты и времени. Если вас не волнует часть Date в DateTime, установите для нее значение по умолчанию, например:

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

Таким образом, вы можете быть согласованными во всех версиях .NET, даже если Microsoft решит изменить базовую дату на что-то еще, кроме 01.01.0001. 

46
panpawel

Возможно, вы захотите посмотреть в DateTime.ToShortTimeString () метод.

Кроме того, в объекте DateTime есть много других методов и свойств, которые могут помочь вам в форматировании даты или времени любым удобным для вас способом. Просто посмотрите на документацию.

21
heavyd

Попробуй это:

TimeSpan TodayTime = DateTime.Now.TimeOfDay;
10
Javier Andres Caicedo

Вы можете использовать следующий код:

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
7
Chirag

Есть разные способы сделать это. Вы можете использовать DateTime.Now.ToLongTimeString(), которая Возвращает только время в строковом формате.

6
tarakaram gopal

Вы можете просто написать

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

Вы можете использовать ToString("T") в течение длительного времени или ToString("t") в течение короткого времени.

3
matsmats
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
3
Görkem Hacıoğlu

Это работает для меня. Я обнаружил это, когда мне пришлось работать с DateTime.Date, чтобы получить только часть даты.

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

Вы можете использовать это

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

Это в реальном времени со значением в миллисекундах и устанавливается только время.

3
chrysanly

если вы используете 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

Вы также должны учитывать вид DateTime.

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