Cara Mengonversi Banyak Unix Timestamp Sekaligus
Mengapa Mengonversi Timestamp Secara Batch?
Saat Anda bekerja dengan log server, ekspor basis data, respons API, atau dataset analitik, Anda jarang menemukan satu timestamp dalam satu waktu. Data dunia nyata sering kali berisi ribuan atau jutaan Unix timestamp yang tersebar di file, kolom, atau payload JSON. Mengonversi masing-masing secara manual tidak praktis. Pemrosesan batch mengubah tumpukan angka mentah menjadi garis waktu yang dapat dibaca.
Panduan ini mencakup pendekatan praktis untuk mengonversi banyak timestamp menggunakan alat baris perintah, skrip, dan alat online kami.
Metode 1: Menggunakan Konverter Batch Online
Unix Timestamp Converter kami mendukung input batch. Tempelkan beberapa timestamp (satu per baris atau dipisahkan koma) dan alat ini akan mengonversi semuanya sekaligus, menampilkan hasilnya dalam tabel yang diurutkan berdasarkan zona waktu.
Ini ideal untuk batch berukuran sedang — puluhan hingga ratusan timestamp — di mana Anda membutuhkan hasil visual yang cepat tanpa menulis kode.
Metode 2: Pemrosesan Batch Baris Perintah
Loop Dasar dengan Perintah date
# Konversi daftar timestamp menggunakan loop bash
for ts in 1785292800 1785379200 1785465600 1785552000; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
Membaca dari File
# timestamps.txt berisi satu timestamp per baris
while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done < timestamps.txt
Menggunakan xargs untuk Pemrosesan Paralel
# Untuk file besar, gunakan xargs dengan beberapa proses
cat timestamps.txt | xargs -P 4 -I {} date -d "@{}" "+%Y-%m-%d %H:%M:%S"
Output ke File CSV
# Hasilkan CSV dengan timestamp asli dan tanggal yang dikonversi
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
Metode 3: Mengekstrak Timestamp dari File Log
File log sering kali berisi timestamp yang tertanam dalam teks terstruktur atau semi-terstruktur. Berikut adalah teknik praktis untuk format log umum.
Log Akses Apache / Nginx
Log Apache dan Nginx sering menggunakan format %{%Y-%m-%d}T atau, jika dikonfigurasi, Unix timestamp:
# Ekstrak dan konversi timestamp dari log Nginx
# Baris log mungkin berisi: [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
Log JSON
Aplikasi modern sering mencatat dalam format JSON:
# Menggunakan jq untuk mengekstrak timestamp dari file log JSON
cat app.log | jq -r '.timestamp' | while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
Log dengan Pemisah Kustom
# Jika timestamp adalah field pertama dalam log (dipisahkan 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
Metode 4: Menggunakan Python untuk Pemrosesan Batch Lanjutan
Python adalah alat paling fleksibel untuk konversi batch, terutama ketika timestamp memerlukan pemfilteran, transformasi, atau ekspor.
Mengonversi Daftar 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))
Memproses File 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")
# Anda dapat mengganti ini dengan zona waktu lokal Anda
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("Konversi selesai. Output ditulis ke converted.csv")
Memfilter Berdasarkan Rentang Tanggal
from datetime import datetime
# Tentukan rentang: awal dan akhir Juli 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]
# Filter hanya Juli 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')}")
Metode 5: Menggunakan awk untuk Konversi Streaming
Untuk file yang sangat besar (jutaan baris), awk memproses data sebagai stream tanpa memuat semuanya ke dalam memori:
#!/usr/bin/awk -f
# batch-convert.awk
# Mengonversi field pertama sebagai Unix timestamp, mencetak semua field dengan tanggal
{
ts = $1
# mktime awk mengharapkan "YYYY MM DD HH MM SS"
# Kita memanggil shell untuk konversi melalui perintah date
cmd = "date -d @" ts " \"+%Y-%m-%d %H:%M:%S\""
cmd | getline date
close(cmd)
print date, $0
}
Penggunaan:
./batch-convert.awk server.log
Metode 6: Menggunakan SQL untuk Timestamp Basis Data
Jika timestamp Anda berada di basis data, biarkan SQL yang melakukan pekerjaan:
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;
Memformat Tabel Output
# Buat tabel terformat rapi dengan header kolom
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")"
}
Perbandingan Kinerja
| Metode | Paling Cocok Untuk | Kecepatan (10K timestamp) | Kompleksitas | |--------|----------|----------------------|------------| | Konverter online | Batch kecil (< 50) | Instan | Tidak ada | | Bash loop | Kecil-sedang (50-10K) | ~30 detik | Rendah | | xargs paralel | Sedang (10K-100K) | ~10 detik | Rendah | | Python | Ukuran apa pun | ~2 detik | Sedang | | awk stream | Sangat besar (jutaan) | ~5 detik | Sedang | | SQL | Data basis data | Instan | Rendah |
Untuk batch sehari-hari yang cepat, gunakan Unix Timestamp Converter kami. Untuk otomatisasi dan dataset besar, skripkan konversinya menggunakan pendekatan pemrograman yang sesuai dengan alur kerja Anda.