Saya membutuhkan fungsi yang dapat mengembalikan perbedaan antara dua tanggal di bawah ini sebagai 24.
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
Jawaban:
Anda dapat melakukan hal berikut:
TimeSpan duration = b - a;
Ada banyak metode bawaan di kelas rentang waktu untuk melakukan apa yang Anda butuhkan, yaitu
duration.TotalSeconds
duration.TotalMinutes
Info lebih lanjut dapat ditemukan di sini .
Coba berikut ini
double hours = (b-a).TotalHours;
Jika Anda hanya ingin perbedaan jam tidak termasuk perbedaan hari, Anda dapat menggunakan yang berikut ini
int hours = (b-a).Hours;
Perbedaan antara kedua properti ini terutama terlihat jika perbedaan waktu lebih dari 1 hari. Properti Jam hanya akan melaporkan perbedaan jam sebenarnya antara kedua tanggal. Jadi jika dua tanggal berbeda dengan 100 tahun tetapi terjadi pada waktu yang sama dalam satu hari, jam akan kembali 0. Tetapi TotalHours akan mengembalikan selisih antara jumlah total jam yang terjadi antara dua tanggal (876.000 jam dalam kasus ini).
Perbedaan lainnya adalah TotalHours akan mengembalikan jam pecahan. Ini mungkin atau mungkin tidak yang Anda inginkan. Jika tidak, Math.Round dapat menyesuaikannya dengan keinginan Anda.
Apakah Anda mungkin mencari:
int Difference = (a-b).Hours;
Perbedaan waktu b / w ke waktu akan ditampilkan menggunakan metode ini.
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();
}
}
gunakan id bidang Anda
var t1 menangkap nilai 4:00 AM
memeriksa kode ini mungkin bisa membantu seseorang.