Tarih saatinden sadece zaman nasıl alınır C # [kapalı]


144

22.06.2009 10:00:00 değerine sahip olduğumu varsayalım. Bu tarih saatinden nasıl yalnızca 10: 00'da alabilirim.


15
Bu bir dize mi yoksa bir DateTime mı?
— Colin Burnett

Yanıtlar:


202

Bunun için birçok seçeneğiniz var:

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

Yardımcı Bağlantı: DateTime.ToString () Kalıpları


16
@MetroSmurf - OP, elbette, ne yapmak istediğini net değil. Evcil hayvan nefretlerimden biri de iplere erken gitmek. Ben her şeyi dizeye dönüştürdü bir meslektaşım vardı - hatta iki katına vb. Bu gerçekleşmesini bekleyen bir kaza. Nesneyi bir insana göstermek için, nesneleri dizelere dönüştürmeyin. O zamana kadar nesnelerle yapışana kadar.
— paul

1
Hızlı başvuru için, sssaniye başına sıfır sile saniye ve olmadan saniye
— Beevee

şimdiye kadarki en iyi cevap
— Tk1993

76

A'dan DateTimekullanabilirsiniz .TimeOfDay- ancak bu size TimeSpangünün zamanını (10 saat) temsil eden bir değer verir .


veya ToString'de Biçimlendirme özel durumları ("biçim kodları")
— kenny

61

C # 'da yalnızca DateTime türü vardır ve hem tarih hem de saat bölümünden oluşur. DateTime'ın Tarih bölümünü umursamıyorsanız, bunu varsayılan değere ayarlayın:

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

Bu şekilde, Microsoft temel tarihi 1/1/0001 dışında bir değere değiştirmeye karar verse bile tüm .NET sürümlerinde tutarlı olabilirsiniz.


19
Bu kabul edilen cevap olmalı. Soru, bir DateTime öğesinden zaman çıkarmak, dizgi olarak biçimlendirmemekti.
— ASalazar,

Özellikle, ".NET'te" değil "C #" da.
— rory.ap

22

DateTime.ToShortTimeString () yöntemine bakmak isteyebilirsiniz .

Ayrıca, DateTime nesnesinde tarih veya saati istediğiniz şekilde oluşturmanıza yardımcı olabilecek birçok yöntem ve özellik vardır . Sadece belgelere bir göz atın.


+1 Zaman çıkışının yerelleştirilmesi gerekliliği olan uluslararası bir ortamda çalışıyorsanız, mevcut sistemin ayarlandığı formatta zamanı döndürdüğü için bu en temiz çözümdür.
— aggaton


6

Bunu yapmanın farklı yolları var. DateTime.Now.ToLongTimeString()Yalnızca saati dize biçiminde döndüren kullanabilirsiniz .


Muhtemelen DateTime.ToLongTimeString()değil demek istedin DateTime.Now.ToLongTimeString(). Bu konunun yaşı göz önüne alındığında, yanıt önceki cevaplara göre önemli bir iyileşme sağlamadığı sürece dirilememek en iyisidir.
— Leigh

5

Sadece yazabilirsin

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

4
Bu, 4 yıl önce gönderilenlere kesinlikle hiçbir şey katmıyor!
— paul

5

Bunu kullanabilirsiniz

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

Milisaniye değeri ile gerçek zamanlıdır ve sadece zamana ayarlanır.


TimeOfDay iyi bir yoldur, ancak zamanınızı standart tiple biçimlendirmeniz gereken milisaniye kısmını da getirir.
— 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

Bu benim için çalışıyor. Sadece tarih bölümünü almak için DateTime.Date ile çalışmak zorunda kaldığımda keşfettim.

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

3

Sen kullanabilirsiniz ToString("T")uzun süre veya ToString("t")kısa bir süre için.


2

gridview kullanıyorsanız yalnızca zamanı DataFormatString="{0:t}" örneklerle gösterebilirsiniz :

    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

Tarihleri ​​değil de saatleri karşılaştırmak istiyorsanız, yalnızca standart bir karşılaştırma tarihine sahip olabilir veya kullandığınız tarihle eşleşebilirsiniz ...

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

Bunun için daha iyi yollar olabilir, ancak tarihlerinizin eşleşmesini sağlar.


1

DateTime Kind'ı da hesaba katmanız gerekir.

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

Bu soruyu cevaplamanın bir anlamı yok, 9 yıl önce soruldu. Ayrıca bu soruya zaten çok iyi cevaplar var.
— benshabatnoam

Zamanı iade etmiyorsun. Cevabınızı gözden
— geçirmelisiniz

@Yepeekai .NET'te Time sınıfı yoktur. Dolayısıyla, Tarih bölümü olmayan bir DateTime örneği yapabileceğiniz seçeneklerden biridir. Ayrıca bir dize döndürebilirsiniz, ancak bunu DateTime işlemlerinde kullanabilirsiniz. Sanırım bir TimeSpan da düşünebilirsin.
— user3720899

imo "yeni DateTime (d.TimeOfDay.Ticks)" şimdiye kadarki en temiz cevap
— Fabianus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.