ตรวจสอบความแตกต่างเป็นวินาทีระหว่างสองครั้ง


111

สวัสดีทั้งหมดฉันกำลังทำโปรเจ็กต์ที่เมื่อมีเหตุการณ์เกิดขึ้นรายละเอียดเกี่ยวกับเหตุการณ์รวมถึงเวลาที่เกิดเหตุการณ์จะถูกเพิ่มลงในอาร์เรย์รายการ

เมื่อวิธีการเสร็จสิ้นฉันจะส่งต่อรายการไปยังวิธีอื่นที่ตรวจสอบค่าของมัน ก่อนที่ฉันจะเล่นวนซ้ำฉันจะตรวจสอบเวลาปัจจุบันของพีซีของฉันและฉันต้องตรวจสอบว่าความแตกต่างระหว่างเวลาที่บันทึกไว้ในอาร์เรย์รายการและเวลาปัจจุบันมากกว่า 5 วินาทีหรือไม่

ฉันจะไปทำสิ่งนี้ได้อย่างไร

คำตอบ:


282

สมมติdateTime1และdateTime2เป็นDateTimeค่า:

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;

ในกรณีของคุณคุณจะใช้DateTime.Nowเป็นค่าใดค่าหนึ่งและเวลาในรายการเป็นค่าอื่น โปรดระวังคำสั่งซื้อเนื่องจากผลลัพธ์อาจเป็นลบหากdateTime1เร็วกว่าdateTime2นั้น


3
ขอบคุณอย่างไรก็ตาม var จะกลายเป็นสองเท่า: TotalSeconds
Loaderon

3
ขอบคุณ ... ฉันเพิ่งถูกกัดโดยใช้ (มิลลิวินาที) โดยไม่ได้ตั้งใจเมื่อฉันควรจะใช้จริงๆ (TotalMilliseconds) ... อุ๊ย
andrew pate


16

เวอร์ชันนี้จะคืนค่าความแตกต่างของจำนวนวินาทีเป็นจำนวนบวกเสมอ (ผลลัพธ์เดียวกันกับโซลูชันของ @ freedeveloper):

var seconds = System.Math.Abs((date1 - date2).TotalSeconds);

4

ฉันใช้สิ่งนี้เพื่อหลีกเลี่ยงช่วงเวลาเชิงลบ

var seconds = (date1< date2)? (date2- date1).TotalSeconds: (date1 - date2).TotalSeconds;

5
ใช้Math.Absแทนรหัสนี้อ่านได้และมีประสิทธิภาพน้อยกว่าการใช้คำตอบด้านบน
ProgramFast
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.