ฉันต้องการฟังก์ชันที่สามารถคืนค่าความแตกต่างระหว่างสองวันที่ด้านล่างเป็น 24
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
ฉันต้องการฟังก์ชันที่สามารถคืนค่าความแตกต่างระหว่างสองวันที่ด้านล่างเป็น 24
DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);
คำตอบ:
ลองทำดังต่อไปนี้
double hours = (b-a).TotalHours;
หากคุณต้องการเพียงความแตกต่างของชั่วโมงโดยไม่รวมส่วนต่างของวันคุณสามารถใช้สิ่งต่อไปนี้
int hours = (b-a).Hours;
ความแตกต่างระหว่างคุณสมบัติทั้งสองนี้ส่วนใหญ่จะเห็นเมื่อเวลาต่างกันมากกว่า 1 วัน คุณสมบัติ Hours จะรายงานเฉพาะความแตกต่างของชั่วโมงจริงระหว่างวันที่สองวัน ดังนั้นหากวันที่สองวันแตกต่างกันตาม 100 ปี แต่เกิดขึ้นพร้อมกันในวันนั้นชั่วโมงจะกลับเป็น 0 แต่ TotalHours จะคืนค่าความแตกต่างระหว่างจำนวนชั่วโมงทั้งหมดที่เกิดขึ้นระหว่างวันที่ทั้งสอง (876,000 ชั่วโมงในกรณีนี้)
ความแตกต่างอื่น ๆ คือ TotalHours จะคืนค่าชั่วโมงเศษ นี่อาจใช่หรือไม่ใช่สิ่งที่คุณต้องการ ถ้าไม่เช่นนั้น Math.Round สามารถปรับเปลี่ยนได้ตามที่คุณต้องการ
คุณอาจกำลังมองหา:
int Difference = (a-b).Hours;
var theDiff24 = (b-a).Hours
int hours = (int)Math.Round((b - a).TotalHours)
ความแตกต่างของเวลา b / w กับเวลาจะแสดงให้ใช้วิธีนี้
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();
}
}
ใช้รหัสฟิลด์ของคุณ
var t1จับค่า4:00 น
ตรวจสอบรหัสนี้อาจเป็นประโยชน์กับใครบางคน