Aşağıdaki iki tarih arasındaki farkı 24 olarak döndürebilecek bir işleve ihtiyacım var.
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
Yanıtlar:
Aşağıdakileri yapabilirsiniz:
TimeSpan duration = b - a;
Zaman dilimi sınıfında ihtiyacınız olan şeyi yapmak için pek çok yerleşik yöntem vardır.
duration.TotalSeconds
duration.TotalMinutes
Daha fazla bilgi burada bulunabilir .
Takip etmeyi dene
double hours = (b-a).TotalHours;
Sadece gün farkı hariç saat farkını istiyorsanız, aşağıdakileri kullanabilirsiniz.
int hours = (b-a).Hours;
Bu iki özellik arasındaki fark esas olarak saat farkı 1 günden fazla olduğunda görülür. Hours özelliği yalnızca iki tarih arasındaki gerçek saat farkını bildirir. Dolayısıyla, iki tarih 100 yıl farklılık gösteriyorsa ancak gün içinde aynı anda gerçekleşmişse, saatler 0 değerini döndürür. Ancak Toplam Saat, iki tarih arasında gerçekleşen toplam saat miktarı arasındaki farkı döndürür (bu durumda 876.000 saat).
Diğer fark, TotalHours'un kesirli saatleri döndürmesidir. İstediğiniz bu olabilir veya olmayabilir. Değilse, Math.Round bunu beğeninize göre ayarlayabilir.
Bu yöntemi kullanarak zaman farkı s / b gösterilecektir.
private void HoursCalculator()
{
var t1 = txtfromtime.Text.Trim();
var t2 = txttotime.Text.Trim();
var Fromtime = t1.Substring(6);
var Totime = t2.Substring(6);
if (Fromtime == "M")
{
Fromtime = t1.Substring(5);
}
if (Totime == "M")
{
Totime = t2.Substring(5);
}
if (Fromtime=="PM" && Totime=="AM" )
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim());
var t = dt1.Subtract(dt2);
//int temp = Convert.ToInt32(t.Hours);
//temp = temp / 2;
lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else if (Fromtime == "AM" && Totime == "PM")
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
else
{
var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
TimeSpan t = (dt2.Subtract(dt1));
lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
}
}
alan kimliğinizi kullanın
var t1 , 4:00 AM değerini yakalar
bu kodu kontrol et birisine yardımcı olabilir.