āļ§āļīāļāļĩāđāļāļĨāļ Unix Timestamp āļŦāļĨāļēāļĒāļāđāļēāļāļĢāđāļāļĄāļāļąāļ
āļāļģāđāļĄāļāđāļāļāđāļāļĨāļ Timestamp āđāļāļāļāļĨāļļāđāļĄ?
āđāļĄāļ·āđāļāļāļļāļāļāļģāļāļēāļāļāļąāļ server logs, āļāļēāļĢāļŠāđāļāļāļāļāļāļēāļāļāđāļāļĄāļđāļĨ, āļāļēāļĢāļāļāļāļāļĨāļąāļ API āļŦāļĢāļ·āļāļāļļāļāļāđāļāļĄāļđāļĨāļ§āļīāđāļāļĢāļēāļ°āļŦāđ āļāļļāļāđāļāļāļāļ°āđāļĄāđāđāļāļĒāļāļ timestamp āļāļĩāļĨāļ°āļāđāļēāđāļĨāļĒ āļāđāļāļĄāļđāļĨāđāļāđāļĨāļāļāļĢāļīāļāļĄāļąāļāļĄāļĩ Unix timestamp āļāļąāļāļāļąāļāļŦāļĢāļ·āļāļāļąāļāļĨāđāļēāļāļāļĢāļ°āļāļēāļĒāļāļĒāļđāđāļāļąāđāļ§āđāļāļĨāđ āļāļāļĨāļąāļĄāļāđ āļŦāļĢāļ·āļ JSON payload āļāļēāļĢāđāļāļĨāļāđāļāđāļĨāļ°āļāđāļēāļāđāļ§āļĒāļāļāđāļāļāļāļąāđāļāļāļģāđāļĄāđāđāļāđāļāļĢāļīāļ āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāļāļĨāļļāđāļĄāđāļāļĨāļĩāđāļĒāļāļ āļđāđāļāļēāļāļāļāļāļąāļ§āđāļĨāļāļāļīāļāđāļŦāđāđāļāđāļāđāļŠāđāļāđāļ§āļĨāļēāļāļĩāđāļāđāļēāļāđāļāđ
āļāļđāđāļĄāļ·āļāļāļĩāđāļāļģāđāļŠāļāļāļ§āļīāļāļĩāļāļēāļĢāļāļĩāđāđāļāđāļāļēāļāđāļāđāļāļĢāļīāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĨāļ timestamp āļŦāļĨāļēāļĒāļāđāļēāļāļĢāđāļāļĄāļāļąāļāđāļāļĒāđāļāđāđāļāļĢāļ·āđāļāļāļĄāļ·āļ command-line, āļŠāļāļĢāļīāļāļāđ āđāļĨāļ°āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļāļāđāļĨāļāđāļāļāļāđāļĢāļē
āļ§āļīāļāļĩāļāļĩāđ 1: āđāļāđāļāļąāļ§āđāļāļĨāļāđāļāļāļāļĨāļļāđāļĄāļāļāļāđāļĨāļāđ
Unix Timestamp Converter āļāļāļāđāļĢāļēāļĢāļāļāļĢāļąāļāļāļēāļĢāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļāļāļĨāļļāđāļĄ āļ§āļēāļ timestamp āļŦāļĨāļēāļĒāļāđāļē (āļŦāļāļķāđāļāļāđāļēāļāđāļāļāļĢāļĢāļāļąāļāļŦāļĢāļ·āļāļāļąāđāļāļāđāļ§āļĒāđāļāļĢāļ·āđāļāļāļŦāļĄāļēāļĒāļāļļāļĨāļ āļēāļ) āđāļĨāļ°āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļ°āđāļāļĨāļāļāļąāđāļāļŦāļĄāļāđāļāļāļĢāļąāđāļāđāļāļĩāļĒāļ§ āđāļŠāļāļāļāļĨāļĨāļąāļāļāđāđāļāļāļēāļĢāļēāļāļāļĩāđāđāļĢāļĩāļĒāļāļāļēāļĄāđāļāļāđāļ§āļĨāļē
āļ§āļīāļāļĩāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļāļāļĨāļļāđāļĄāļāļāļēāļāļāļēāļāļāļĨāļēāļ â āļŦāļĨāļēāļĒāļŠāļīāļāļāļķāļāļŦāļĨāļēāļĒāļĢāđāļāļĒ timestamp â āļāļĩāđāļāļļāļāļāđāļāļāļāļēāļĢāļāļĨāļĨāļąāļāļāđāļāļĩāđāļĢāļ§āļāđāļĢāđāļ§āđāļĨāļ°āļĄāļāļāđāļŦāđāļāđāļāđāđāļāļĒāđāļĄāđāļāđāļāļāđāļāļĩāļĒāļāđāļāđāļ
āļ§āļīāļāļĩāļāļĩāđ 2: āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāļāļĨāļļāđāļĄāļāđāļ§āļĒ Command-Line
āļĨāļđāļāļāļ·āđāļāļāļēāļāļāđāļ§āļĒāļāļģāļŠāļąāđāļ date
# āđāļāļĨāļāļĢāļēāļĒāļāļēāļĢ timestamp āđāļāļĒāđāļāđ bash loop
for ts in 1785292800 1785379200 1785465600 1785552000; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
āļāđāļēāļāļāļēāļāđāļāļĨāđ
# timestamps.txt āļĄāļĩāļŦāļāļķāđāļ timestamp āļāđāļāļāļĢāļĢāļāļąāļ
while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done < timestamps.txt
āđāļāđ xargs āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāļāļāļēāļ
# āļŠāļģāļŦāļĢāļąāļāđāļāļĨāđāļāļāļēāļāđāļŦāļāđ āđāļāđ xargs āļāļĢāđāļāļĄāļŦāļĨāļēāļĒāđāļāļĢāđāļāļŠ
cat timestamps.txt | xargs -P 4 -I {} date -d "@{}" "+%Y-%m-%d %H:%M:%S"
āļŠāđāļāļāļāļāđāļāđāļāđāļāļĨāđ CSV
# āļŠāļĢāđāļēāļ CSV āļāļĢāđāļāļĄ timestamp āļāđāļāļāļāļąāļāđāļĨāļ°āļ§āļąāļāļāļĩāđāļāļĩāđāđāļāļĨāļāđāļĨāđāļ§
echo "timestamp,date_utc,date_local" > output.csv
while read -r ts; do
utc_date=$(TZ=UTC date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
local_date=$(date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
echo "$ts,$utc_date,$local_date" >> output.csv
done < timestamps.txt
āļ§āļīāļāļĩāļāļĩāđ 3: āļāļēāļĢāđāļĒāļ Timestamp āļāļēāļāđāļāļĨāđāļĨāđāļāļ
āđāļāļĨāđāļĨāđāļāļāļĄāļąāļāļĄāļĩ timestamp āļāļąāļāļāļĒāļđāđāđāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļāļŦāļĢāļ·āļāļāļķāđāļāđāļāļĢāļāļŠāļĢāđāļēāļ āļāļĩāđāļāļ·āļāđāļāļāļāļīāļāļāļĩāđāđāļāđāļāļēāļāđāļāđāļāļĢāļīāļāļŠāļģāļŦāļĢāļąāļāļĢāļđāļāđāļāļāļĨāđāļāļāļāļąāđāļ§āđāļ
Apache / Nginx Access Logs
Apache āđāļĨāļ° Nginx logs āļĄāļąāļāđāļāđāļĢāļđāļāđāļāļ %{%Y-%m-%d}T āļŦāļĢāļ·āļāļŦāļēāļāļāļģāļŦāļāļāļāđāļēāđāļ§āđ āļāļ°āđāļāđ Unix timestamp:
# āđāļĒāļāđāļĨāļ°āđāļāļĨāļ timestamp āļāļēāļ Nginx log
# āļāļĢāļĢāļāļąāļāļĨāđāļāļāļāļēāļāļĄāļĩ: [1785292800] GET /index.html 200
grep -oP '\[\K[0-9]{10}(?=\])' access.log | while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
JSON Logs
āđāļāļāļāļĨāļīāđāļāļāļąāļāļŠāļĄāļąāļĒāđāļŦāļĄāđāļĄāļąāļāļāļąāļāļāļķāļāļĨāđāļāļāđāļāļĢāļđāļāđāļāļ JSON:
# āđāļāđ jq āđāļāļ·āđāļāđāļĒāļ timestamp āļāļēāļāđāļāļĨāđāļĨāđāļāļ JSON
cat app.log | jq -r '.timestamp' | while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
āļĨāđāļāļāļāļĩāđāļāļąāđāļāļāđāļ§āļĒāļāļąāļ§āļāļąāđāļāđāļāļāļāļģāļŦāļāļāđāļāļ
# āļŦāļēāļ timestamp āđāļāđāļāļāļīāļĨāļāđāđāļĢāļāđāļāļĨāđāļāļ (āļāļąāđāļāļāđāļ§āļĒ pipe)
awk -F'|' '{ts=$1; cmd="date -d @" ts " \"+%Y-%m-%d %H:%M:%S\""; cmd | getline date; close(cmd); print date, $0}' server.log
āļ§āļīāļāļĩāļāļĩāđ 4: āđāļāđ Python āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāļāļĨāļļāđāļĄāļāļąāđāļāļŠāļđāļ
Python āđāļāđāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļĩāđāļĒāļ·āļāļŦāļĒāļļāđāļāļāļĩāđāļŠāļļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĨāļāđāļāļāļāļĨāļļāđāļĄ āđāļāļĒāđāļāļāļēāļ°āđāļĄāļ·āđāļ timestamp āļāđāļāļāļāļēāļĢāļāļēāļĢāļāļĢāļāļ āļāļēāļĢāđāļāļĨāļ āļŦāļĢāļ·āļāļāļēāļĢāļŠāđāļāļāļāļ
āđāļāļĨāļāļĢāļēāļĒāļāļēāļĢ Timestamp
from datetime import datetime
import json
timestamps = [1785292800, 1785379200, 1785465600, 1785552000]
results = []
for ts in timestamps:
dt = datetime.utcfromtimestamp(ts)
results.append({
"timestamp": ts,
"datetime_utc": dt.strftime("%Y-%m-%d %H:%M:%S"),
"date": dt.strftime("%Y-%m-%d"),
"time": dt.strftime("%H:%M:%S"),
"day_of_week": dt.strftime("%A"),
})
print(json.dumps(results, indent=2))
āļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĨāđ CSV
import csv
from datetime import datetime
with open("data.csv", "r") as infile, open("converted.csv", "w", newline="") as outfile:
reader = csv.DictReader(infile)
writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames + ["date_utc", "date_local"])
writer.writeheader()
for row in reader:
ts = int(row["timestamp"])
dt_utc = datetime.utcfromtimestamp(ts)
row["date_utc"] = dt_utc.strftime("%Y-%m-%d %H:%M:%S")
# āļāļļāļāļŠāļēāļĄāļēāļĢāļāđāļāļāļāļĩāđāļāđāļ§āļĒāđāļāļāđāļ§āļĨāļēāļāđāļāļāļāļīāđāļāļāļāļāļāļļāļ
from datetime import timezone
dt_local = datetime.fromtimestamp(ts, tz=timezone.utc).astimezone()
row["date_local"] = dt_local.strftime("%Y-%m-%d %H:%M:%S %Z")
writer.writerow(row)
print("āļāļēāļĢāđāļāļĨāļāđāļŠāļĢāđāļāļŠāļĄāļāļđāļĢāļāđ āļāļĨāļĨāļąāļāļāđāļāļđāļāđāļāļĩāļĒāļāđāļāļĒāļąāļ converted.csv")
āļāļĢāļāļāļāļēāļĄāļāđāļ§āļāļ§āļąāļāļāļĩāđ
from datetime import datetime
# āļāļģāļŦāļāļāļāđāļ§āļ: āđāļĢāļīāđāļĄāļāđāļāđāļĨāļ°āļŠāļīāđāļāļŠāļļāļāđāļāļ·āļāļāļāļĢāļāļāļēāļāļĄ 2026
start_ts = int(datetime(2026, 7, 1).timestamp())
end_ts = int(datetime(2026, 7, 31, 23, 59, 59).timestamp())
timestamps = [1785292800, 1785379200, 1785465600, 1785552000,
1234567890, 1000000000]
# āļāļĢāļāļāđāļāļāļēāļ°āđāļāļ·āļāļāļāļĢāļāļāļēāļāļĄ 2026
july_only = [ts for ts in timestamps if start_ts <= ts <= end_ts]
for ts in july_only:
dt = datetime.utcfromtimestamp(ts)
print(f"{ts} -> {dt.strftime('%Y-%m-%d %H:%M:%S')}")
āļ§āļīāļāļĩāļāļĩāđ 5: āđāļāđ awk āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĨāļāđāļāļāļŠāļāļĢāļĩāļĄ
āļŠāļģāļŦāļĢāļąāļāđāļāļĨāđāļāļāļēāļāđāļŦāļāđāļĄāļēāļ (āļŦāļĨāļēāļĒāļĨāđāļēāļāđāļāļ§) awk āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāđāļāđāļāļŠāļāļĢāļĩāļĄāđāļāļĒāđāļĄāđāļāđāļāļāđāļŦāļĨāļāļāļąāđāļāļŦāļĄāļāđāļāđāļēāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ:
#!/usr/bin/awk -f
# batch-convert.awk
# āđāļāļĨāļāļāļīāļĨāļāđāđāļĢāļāđāļāđāļ Unix timestamp āļāļīāļĄāļāđāļāļļāļāļāļīāļĨāļāđāļāļĢāđāļāļĄāļ§āļąāļāļāļĩāđ
{
ts = $1
# mktime āļāļāļ awk āļāļēāļāļŦāļ§āļąāļāļĢāļđāļāđāļāļ "YYYY MM DD HH MM SS"
# āđāļĢāļēāđāļĢāļĩāļĒāļ shell āđāļāļ·āđāļāđāļāļĨāļāļāđāļēāļāļāļģāļŠāļąāđāļ date
cmd = "date -d @" ts " \"+%Y-%m-%d %H:%M:%S\""
cmd | getline date
close(cmd)
print date, $0
}
āļāļēāļĢāđāļāđāļāļēāļ:
./batch-convert.awk server.log
āļ§āļīāļāļĩāļāļĩāđ 6: āđāļāđ SQL āļŠāļģāļŦāļĢāļąāļ Timestamp āđāļāļāļēāļāļāđāļāļĄāļđāļĨ
āļŦāļēāļ timestamp āļāļāļāļāļļāļāļāļĒāļđāđāđāļāļāļēāļāļāđāļāļĄāļđāļĨ āđāļŦāđ SQL āļāļąāļāļāļēāļĢ:
PostgreSQL
SELECT
id,
event_time,
to_timestamp(event_time) AS readable_time,
to_char(to_timestamp(event_time), 'YYYY-MM-DD HH24:MI:SS') AS formatted_time
FROM events
WHERE to_timestamp(event_time) >= '2026-07-01';
MySQL
SELECT
id,
event_time,
FROM_UNIXTIME(event_time) AS readable_time,
FROM_UNIXTIME(event_time, '%Y-%m-%d %H:%i:%s') AS formatted_time
FROM events
WHERE FROM_UNIXTIME(event_time) >= '2026-07-01';
SQLite
SELECT
id,
event_time,
datetime(event_time, 'unixepoch') AS readable_time,
strftime('%Y-%m-%d %H:%M:%S', event_time, 'unixepoch') AS formatted_time
FROM events;
āļāļēāļĢāļāļąāļāļĢāļđāļāđāļāļāļāļēāļĢāļēāļāļāļĨāļĨāļąāļāļāđ
# āļŠāļĢāđāļēāļāļāļēāļĢāļēāļāļāļĩāđāļĄāļĩāļĢāļđāļāđāļāļāļŠāļ§āļĒāļāļēāļĄāļāļĢāđāļāļĄāļŦāļąāļ§āļāļāļĨāļąāļĄāļāđ
convert() {
printf "%-15s %-25s %-25s\n" "TIMESTAMP" "UTC" "LOCAL"
printf "%-15s %-25s %-25s\n" "---------------" "-------------------------" "-------------------------"
while read -r ts; do
utc=$(TZ=UTC date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
local=$(date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
printf "%-15s %-25s %-25s\n" "$ts" "$utc" "$local"
done <<< "$(cat "$1")"
}
āļāļēāļĢāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
| āļ§āļīāļāļĩāļāļēāļĢ | āđāļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļ | āļāļ§āļēāļĄāđāļĢāđāļ§ (10K timestamp) | āļāļ§āļēāļĄāļāļąāļāļāđāļāļ | |--------|----------|----------------------|------------| | āļāļąāļ§āđāļāļĨāļāļāļāļāđāļĨāļāđ | āļāļĨāļļāđāļĄāđāļĨāđāļ (< 50) | āļāļąāļāļāļĩ | āđāļĄāđāļĄāļĩ | | Bash loop | āļāļāļēāļāđāļĨāđāļ-āļāļĨāļēāļ (50-10K) | ~30 āļ§āļīāļāļēāļāļĩ | āļāđāļģ | | xargs āđāļāļāļāļāļēāļ | āļāļĨāļēāļ (10K-100K) | ~10 āļ§āļīāļāļēāļāļĩ | āļāđāļģ | | Python | āļāļļāļāļāļāļēāļ | ~2 āļ§āļīāļāļēāļāļĩ | āļāļēāļāļāļĨāļēāļ | | awk stream | āļāļāļēāļāđāļŦāļāđāļĄāļēāļ (āļĨāđāļēāļ) | ~5 āļ§āļīāļāļēāļāļĩ | āļāļēāļāļāļĨāļēāļ | | SQL | āļāđāļāļĄāļđāļĨāļāļēāļāļāđāļāļĄāļđāļĨ | āļāļąāļāļāļĩ | āļāđāļģ |
āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĨāļāđāļāļāļāļĨāļļāđāļĄāđāļāļāļĩāļ§āļīāļāļāļĢāļ°āļāļģāļ§āļąāļ āđāļāđ Unix Timestamp Converter āļāļāļāđāļĢāļē āļŠāļģāļŦāļĢāļąāļāļĢāļ°āļāļāļāļąāļāđāļāļĄāļąāļāļīāđāļĨāļ°āļāļļāļāļāđāļāļĄāļđāļĨāļāļāļēāļāđāļŦāļāđ āđāļāļĩāļĒāļāļŠāļāļĢāļīāļāļāđāļāļēāļĢāđāļāļĨāļāļāđāļ§āļĒāļ§āļīāļāļĩāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāļāļĩāđāļāļĢāļāļāļąāļāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļāļāļāļļāļ