คลาส DateTime ใน C# ใช้แทนวันที่และเวลา ช่วงตั้งแต่ 00:00:00 1 มกราคม ปี 1 ถึง 23:59:59 31 ธันวาคม ปี 9999 ใช้ struct (Value Type) ไม่ใช่ class
สร้าง DateTime
// ระบุปี เดือน วัน DateTime dt = new DateTime(2024, 1, 15); // ระบุถึงวินาที DateTime dt2 = new DateTime(2024, 1, 15, 14, 30, 45); // จาก Ticks DateTime dt3 = new DateTime(638400000000000000);
วันที่/เวลาปัจจุบัน
DateTime now = DateTime.Now; // เวลาท้องถิ่น DateTime utcNow = DateTime.UtcNow; // เวลา UTC DateTime today = DateTime.Today; // วันที่วันนี้ (เวลา 00:00:00)
การคำนวณวันที่
DateTime dt = new DateTime(2024, 1, 15); DateTime nextWeek = dt.AddDays(7); DateTime nextMonth = dt.AddMonths(1); DateTime nextYear = dt.AddYears(1); DateTime oneHourLater = dt.AddHours(1); TimeSpan diff = DateTime.Now - dt; // ความต่างระหว่างสอง DateTime
การจัดรูปแบบ (Formatting)
DateTime dt = new DateTime(2024, 1, 15, 14, 30, 45);
Console.WriteLine(dt.ToString("yyyy-MM-dd")); // 2024-01-15
Console.WriteLine(dt.ToString("dd/MM/yyyy HH:mm")); // 15/01/2024 14:30
Console.WriteLine(dt.ToString("D", new CultureInfo("th-TH"))); // 15 มกราคม 2567
ตัวอย่างโค้ดสมบูรณ์
using System;
using System.Globalization;
class Test
{
static void Main()
{
// สร้างวันที่เฉพาะ
DateTime dt = new DateTime(2024, 1, 15);
Console.WriteLine(dt.ToString()); // 1/15/2024 12:00:00 AM
// วันที่ปัจจุบัน
Console.WriteLine(DateTime.Now.ToString());
// เพิ่มวัน
DateTime dt1 = new DateTime(2024, 1, 15, 8, 20, 10);
Console.WriteLine("วันที่เดิม: " + dt1.ToString());
DateTime dt2 = dt1.AddDays(7);
Console.WriteLine("วันที่ใหม่: " + dt2.ToString());
}
}
ผลลัพธ์ตัวอย่าง
1/15/2024 12:00:00 AM 1/15/2024 10:30:45 AM วันที่เดิม: 1/15/2024 8:20:10 AM วันที่ใหม่: 1/22/2024 8:20:10 AM
หมายเหตุ: สำหรับโซนเวลาและการจัดการวันที่ซับซ้อน ควรใช้ DateTimeOffset หรือไลบรารี NodaTime