ใน C#, DateTime
และ TimeSpan
เป็นหัวใจหลักในการดำเนินการด้านวันที่และเวลา DateTime
แทนการที่แน่นอนในเวลา, โดยปกติจะแสดงเป็นวันที่และเวลาของวัน ในขณะที่ TimeSpan
แทนช่วงเวลา ในอดีต, การคำนวณวันที่และเวลามักเกิดข้อผิดพลาดเนื่องจากการจัดการกับวัน, เดือน, และปีอธิกสุรทินด้วยตนเอง DateTime
ทำให้ความซับซ้อนเหล่านี้แปลงเป็นรูปแบบง่าย ๆ โดยให้เฟรมเวิร์กจัดการกับส่วนที่ยาก ทางเลือกของ DateTime
และ TimeSpan
ใน .NET รวมถึง DateTimeOffset
ซึ่งรวมถึงการหักช่วงเวลาของเขตเวลา, ทำให้เหมาะกับแอปพลิเคชั่นที่ทำงานข้ามเขตเวลา ทางเลือกอื่นคือ Noda Time, ไลบรารีจาก Jon Skeet ออกแบบมาเพื่อการจัดการวันที่และเวลาที่ซับซ้อนยิ่งขึ้น เช่น ปฏิทินที่แตกต่างกัน ในเชิงการดำเนินการ, เมื่อคุณเพิ่ม TimeSpan
เข้ากับ DateTime
, ในส่วนลึกของเฟรมเวิร์ก, มันกำลังจัดการกับขีด ซึ่งเป็นหน่วยพื้นฐานของเวลาใน .NET (1 ขีด = 100 นาโนวินาที
) สำหรับวันที่ในอดีต, TimeSpan
ที่มีค่าลบจะทำหน้าที่นี้ได้ดี.