การคำนวณวันที่คืออะไร?
การคำนวณวันที่คือกระบวนการหาความแตกต่างระหว่างสองวันตามปฏิทิน หรือการบวก/ลบช่วงเวลาจากวันที่ที่กำหนด เครื่องคำนวณวันที่ออนไลน์ช่วยให้คุณหาจำนวนวัน สัปดาห์ เดือน และปีที่แน่นอนระหว่างวันที่ใดๆ สองวัน โดยไม่ต้องนับด้วยมือ เครื่องมือนี้มีประโยชน์ในการวางแผนโครงการ กฎหมายสัญญา การบัญชีการเงิน และการพัฒนาซอฟต์แวร์
ความซับซ้อนของการคำนวณวันที่มาจากโครงสร้างที่ไม่สม่ำเสมอของปฏิทินเกรโกเรียน แต่ละเดือนมี 28, 29, 30 หรือ 31 วัน แต่ละปีมี 365 หรือ 366 วันขึ้นอยู่กับกฎปีอธิกสุรทิน การลบจำนวนวันอย่างง่ายจะให้ผลผิดพลาดเมื่อวันที่ข้ามเดือนหรือปีที่แตกต่างกัน อัลกอริทึมหาความแตกต่างของวันที่ที่ถูกต้องต้องคำนึงถึงความไม่สม่ำเสมอเหล่านี้โดยการคำนวณแต่ละหน่วยปฏิทินแยกกัน
การคำนวณเลขคณิตวันที่ปรากฏในบริบทการเขียนโปรแกรมหลายด้าน ได้แก่ การคำนวณวันหมดอายุของโทเค็น การกำหนดเวลาเหตุการณ์ที่เกิดซ้ำ การคำนวณกำหนดเส้นตาย SLA หรือการวัดเวลาที่ผ่านไประหว่างรายการในไฟล์บันทึก ในกระบวนการทำงาน DevOps จะพบในรูปแบบช่วงเวลาที่ใบรับรองมีผล ระยะเวลาหยุดการดีพลอย และความยาวของรอบเวรตามสาย แม้ว่าภาษาโปรแกรมส่วนใหญ่จะมีไลบรารีสำหรับจัดการวันที่ แต่เครื่องคำนวณบนเบราว์เซอร์ให้คำตอบทันทีสำหรับการตรวจสอบด่วนโดยไม่ต้องเขียนโค้ด ติดตั้งไลบรารี หรือเปิด REPL
ทำไมต้องใช้เครื่องคำนวณวันที่นี้?
รับผลลัพธ์ทันทีว่ามีเวลาเท่าใดระหว่างวันที่สองวัน พร้อมแสดงผลในหลายหน่วยพร้อมกัน ไม่ต้องใช้สูตร ไม่ต้องเขียนโค้ด ไม่ต้องสมัครสมาชิก
กรณีการใช้งานเครื่องคำนวณวันที่
ตารางอ้างอิงหน่วยระยะเวลาวันที่
การคำนวณความแตกต่างของวันที่เกี่ยวข้องกับหน่วยที่มีความยาวแตกต่างกัน เดือนและปีไม่มีความยาวคงที่ ซึ่งเป็นเหตุผลว่าทำไมการหารรวมวันอย่างง่ายจึงให้ผลที่ไม่แม่นยำ ตารางด้านล่างแสดงแต่ละหน่วยและช่วงของมัน
| หน่วย | เทียบเท่า | หมายเหตุ |
|---|---|---|
| 1 year | 365 or 366 days | Depends on leap year |
| 1 month | 28–31 days | Varies by month |
| 1 week | 7 days | Fixed |
| 1 day | 24 hours | Fixed (ignoring DST transitions) |
| 1 hour | 3,600 seconds | Fixed |
| 1 minute | 60 seconds | Fixed |
รูปแบบวันที่ที่พบบ่อย
เมื่อทำงานกับวันที่ในเชิงโปรแกรม รูปแบบจะกำหนดวิธีที่สตริงวันที่ถูกแปลง การใช้รูปแบบผิดทำให้เกิดข้อผิดพลาดที่ไม่แสดงข้อความเตือน ISO 8601 เป็นตัวเลือกที่ปลอดภัยที่สุดสำหรับการแลกเปลี่ยนข้อมูลเพราะไม่คลุมเครือและรับรู้เขตเวลา ตารางด้านล่างแสดงรูปแบบที่คุณน่าจะพบบ่อยที่สุด
| รูปแบบ | ตัวอย่าง | ใช้ใน |
|---|---|---|
| ISO 8601 | 2026-04-10T14:30:00Z | APIs, databases, logs |
| RFC 2822 | Fri, 10 Apr 2026 14:30:00 +0000 | Email headers, HTTP |
| Unix timestamp | 1775831400 | Epoch-based systems |
| US format | 04/10/2026 | User-facing (US locale) |
| European format | 10.04.2026 | User-facing (EU locale) |
| Short ISO | 2026-04-10 | HTML date inputs, SQL DATE |
ตัวอย่างโค้ด: คำนวณจำนวนวันระหว่างวันที่
ตัวอย่างการทำงานสำหรับการคำนวณความแตกต่างระหว่างสองวันใน JavaScript, Python, Go และบรรทัดคำสั่ง แต่ละตัวอย่างแสดงทั้งการคำนวณรวมวันและการแยกย่อยตามหน่วยปฏิทินในกรณีที่ภาษารองรับ
// Calculate days between two dates
const start = new Date('2026-01-15')
const end = new Date('2026-04-10')
const diffMs = end.getTime() - start.getTime()
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24))
console.log(diffDays) // → 85
// Get year, month, day breakdown
function dateDiff(a, b) {
let years = b.getFullYear() - a.getFullYear()
let months = b.getMonth() - a.getMonth()
let days = b.getDate() - a.getDate()
if (days < 0) {
months--
days += new Date(b.getFullYear(), b.getMonth(), 0).getDate()
}
if (months < 0) { years--; months += 12 }
return { years, months, days }
}
console.log(dateDiff(start, end)) // → { years: 0, months: 2, days: 26 }from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
start = date(2026, 1, 15)
end = date(2026, 4, 10)
# Total days
diff = (end - start).days
print(diff) # → 85
# Year/month/day breakdown (requires python-dateutil)
rd = relativedelta(end, start)
print(f"{rd.years}y {rd.months}m {rd.days}d") # → 0y 2m 26d
# Add 90 days to a date
future = start + timedelta(days=90)
print(future) # → 2026-04-15package main
import (
"fmt"
"time"
)
func main() {
start := time.Date(2026, 1, 15, 0, 0, 0, 0, time.UTC)
end := time.Date(2026, 4, 10, 0, 0, 0, 0, time.UTC)
// Total duration
diff := end.Sub(start)
days := int(diff.Hours() / 24)
fmt.Println(days) // → 85
// Add 90 days
future := start.AddDate(0, 0, 90)
fmt.Println(future.Format("2006-01-02")) // → 2026-04-15
}# Days between two dates (GNU coreutils) echo $(( ($(date -d "2026-04-10" +%s) - $(date -d "2026-01-15" +%s)) / 86400 )) # → 85 # Add 90 days to a date (GNU date) date -d "2026-01-15 + 90 days" +%Y-%m-%d # → 2026-04-15 # macOS (BSD date) — add 90 days date -j -v+90d -f "%Y-%m-%d" "2026-01-15" +%Y-%m-%d # → 2026-04-15