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.