คู่มือครบครันสำหรับคำสั่ง date - มากกว่าการดูเวลา เพื่อ Formatting, Calculation, และ Timezone
การใช้งานพื้นฐาน
date
# Sun Dec 14 11:33:55 IST 2008
Custom Format (Format Specifiers)
| Code | คำอธิบาย | ตัวอย่าง |
%% | Literal % | % |
%a | Weekday Abbr (Sun) | Sun |
%A | Weekday Full (Sunday) | Sunday |
%b | Month Abbr (Jan) | Dec |
%B | Month Full (January) | December |
%c | Locale Date Time | Sun Dec 14 11:33:55 2008 |
%C | Century (Year/100) | 20 |
%d | Day of Month (01-31) | 14 |
%D | Date %m/%d/%y | 12/14/08 |
%F | Date %Y-%m-%d (ISO) | 2008-12-14 |
%H | Hour 00-23 | 11 |
%I | Hour 01-12 | 11 |
%j | Day of Year (001-366) | 349 |
%m | Month 01-12 | 12 |
%M | Minute 00-59 | 33 |
%n | Newline | - |
%p | AM/PM | AM |
%r | Time 12-hour | 11:33:55 AM |
%R | Time 24-hour %H:%M | 11:33 |
%s | Epoch Seconds (Unix Time) | 1229243635 |
%S | Second 00-59 | 55 |
%t | Tab | - |
%T | Time %H:%M:%S | 11:33:55 |
%u | Weekday 1-7 (Mon=1) | 7 |
%U | Week of Year (Sun first) | 50 |
%V | ISO Week of Year | 50 |
%w | Weekday 0-6 (Sun=0) | 0 |
%W | Week of Year (Mon first) | 50 |
%x | Locale Date | 12/14/08 |
%X | Locale Time | 11:33:55 |
%y | Year 2 digits | 08 |
%Y | Year 4 digits | 2008 |
%z | Timezone Offset (+0700) | +0700 |
%Z | Timezone Name (IST) | IST |
ตัวอย่าง Format ที่ใช้บ่อย
date +"%Y-%m-%d" # 2024-12-14 (ISO Date)
date +"%Y%m%d" # 20241214 (Compact)
date +"%Y-%m-%d %H:%M:%S" # 2024-12-14 11:33:55 (DateTime)
date +"%F %T" # Shortcut สำหรับข้างบน
date +"%s" # Unix Timestamp (สำคัญสำหรับ Programming)
date +"%A, %B %d, %Y" # Thursday, December 14, 2024
Date Calculation (--date / -d)
date -d "yesterday"
date -d "tomorrow"
date -d "last monday"
date -d "next friday"
date -d "5 days ago"
date -d "2 weeks"
date -d "3 months"
date -d "1 year"
date -d "2024-12-25"
date -d "2024-12-25 10:30:00"
date -d "@1703472000" # จาก Unix Timestamp
ตั้งค่าเวลา (ต้องเป็น Root)
date -s "2024-12-25 10:30:00"
date --set="2024-12-25 10:30:00"
Timezone
TZ=Asia/Bangkok date # แสดงเวลา Bangkok ชั่วคราว
date -d 'TZ="America/New_York" now' # เวลา New York ตอนนี้
การใช้ใน Shell Script
#!/bin/bash
NOW=$(date +"%Y-%m-%d %H:%M:%S")
BACKUP_DIR="/backup/$(date +%Y/%m/%d)"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/backup-$(date +%H%M%S).tar.gz" /data
FAQ
- Unix Timestamp คืออะไร? วินาทีที่ผ่านมาตั้งแต่ 1970-01-01 00:00:00 UTC (
date +%s)
- ISO 8601?
date -Iseconds → 2024-12-14T11:33:55+07:00
- Nanosecond?
date +%N (ต้องการ GNU date)
date เป็น Swiss Army Knife ของเวลาใน Linux เรียนรู้ Format Specifiers ไว้ จะเขียน Script/Get Log ทำงานได้เร็วขึ้นมาก