è€æ°ã® Unix ã¿ã€ã ã¹ã¿ã³ããäžåºŠã«å€æããæ¹æ³
ãªãã¿ã€ã ã¹ã¿ã³ããããã倿ããã®ãïŒ
ãµãŒããŒãã°ãããŒã¿ããŒã¹ã®ãšã¯ã¹ããŒããAPI ã¬ã¹ãã³ã¹ããŸãã¯åæããŒã¿ã»ãããæ±ããšããäžåºŠã« 1 ã€ã®ã¿ã€ã ã¹ã¿ã³ãããèŠãããšã¯ã»ãšãã©ãããŸãããå®éã®ããŒã¿ã«ã¯ããã¡ã€ã«ãã«ã©ã ããŸã㯠JSON ãã€ããŒãã«æ£ãã°ã£ãæ°åãŸãã¯æ°çŸäžã® Unix ã¿ã€ã ã¹ã¿ã³ããå«ãŸããããšããããããŸãããããããæåã§å€æããã®ã¯çŸå®çã§ã¯ãããŸããããããåŠçã¯ãèšå€§ãªçã®æ°å€ãèªã¿ãããã¿ã€ã ã©ã€ã³ã«å€ããŸãã
ãã®ã¬ã€ãã§ã¯ãã³ãã³ãã©ã€ã³ããŒã«ãã¹ã¯ãªãããåœç€Ÿã®ãªã³ã©ã€ã³ããŒã«ã䜿çšããŠè€æ°ã®ã¿ã€ã ã¹ã¿ã³ãã倿ããå®è·µçãªã¢ãããŒãã玹ä»ããŸãã
æ¹æ³ 1: ãªã³ã©ã€ã³ã®ããã倿ããŒã«ã䜿çšãã
åœç€Ÿã® Unix ã¿ã€ã ã¹ã¿ã³ã倿ããŒã« ã¯ãããå ¥åããµããŒãããŠããŸããè€æ°ã®ã¿ã€ã ã¹ã¿ã³ãïŒ1 è¡ã« 1 ã€ãŸãã¯ã«ã³ãåºåãïŒã貌ãä»ãããšãããŒã«ã¯ãããããã¹ãŠäžåºŠã«å€æããã¿ã€ã ãŸãŒã³å¥ã«äžŠã¹æ¿ãããã衚ã§çµæã衚瀺ããŸãã
ããã¯ãæ°åããæ°çŸã®ã¿ã€ã ã¹ã¿ã³ããšããäžèŠæš¡ã®ãããã«æé©ã§ããã³ãŒããæžããã«ããã°ããèŠèŠçãªçµæãå¿ èŠãªå Žåã«æé©ã§ãã
æ¹æ³ 2: ã³ãã³ãã©ã€ã³ã®ãããåŠç
date ã³ãã³ãã«ããåºæ¬çãªã«ãŒã
# Convert a list of timestamps using a bash loop
for ts in 1785292800 1785379200 1785465600 1785552000; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
ãã¡ã€ã«ããèªã¿åã
# timestamps.txt contains one timestamp per line
while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done < timestamps.txt
䞊ååŠçã« xargs ã䜿çšãã
# For large files, use xargs with multiple processes
cat timestamps.txt | xargs -P 4 -I {} date -d "@{}" "+%Y-%m-%d %H:%M:%S"
CSV ãã¡ã€ã«ã«åºåãã
# Generate a CSV with original timestamp and converted date
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: ãã°ãã¡ã€ã«ããã¿ã€ã ã¹ã¿ã³ããæœåºãã
ãã°ãã¡ã€ã«ã«ã¯ãæ§é åãŸãã¯åæ§é åããã¹ãã«åã蟌ãŸããã¿ã€ã ã¹ã¿ã³ããå«ãŸããããšããããããŸããäžè¬çãªãã°åœ¢åŒã«å¯Ÿããå®è·µçãªãã¯ããã¯ã玹ä»ããŸãã
Apache / Nginx ã¢ã¯ã»ã¹ãã°
Apache ãš Nginx ã®ãã°ã¯ã%{%Y-%m-%d}T 圢åŒãŸãã¯ãèšå®ãããŠããã° Unix ã¿ã€ã ã¹ã¿ã³ãã䜿çšããããšããããããŸã:
# Extract and convert timestamps from an Nginx log
# The log lines might contain: [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 ãã°
æè¿ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãJSON 圢åŒã§ãã°ãèšé²ããããšããããããŸã:
# Using jq to extract timestamps from a JSON log file
cat app.log | jq -r '.timestamp' | while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
ã«ã¹ã¿ã åºåãæåã®ãã°
# If timestamps are the first field in a log (pipe-delimited)
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 ã¯ãç¹ã«ã¿ã€ã ã¹ã¿ã³ãã«ãã£ã«ã¿ãªã³ã°ã倿ããŸãã¯ãšã¯ã¹ããŒããå¿ èŠãªå Žåã«ããããå€æã«æãæè»ãªããŒã«ã§ãã
ã¿ã€ã ã¹ã¿ã³ãã®ãªã¹ãã倿ãã
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")
# You can replace this with your local timezone
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("Conversion complete. Output written to converted.csv")
æ¥ä»ç¯å²ã§ãã£ã«ã¿ãªã³ã°ãã
from datetime import datetime
# Define the range: start and end of July 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 to July 2026 only
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
# Converts first field as Unix timestamp, prints all fields with date
{
ts = $1
# awk's mktime expects "YYYY MM DD HH MM SS"
# We call the shell for conversion via date command
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 ã䜿çšãã
ã¿ã€ã ã¹ã¿ã³ããããŒã¿ããŒã¹ã«ããå Žåã¯ã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;
åºåããŒãã«ã®æžåŒèšå®
# Create a nicely formatted table with column headers
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")"
}
ããã©ãŒãã³ã¹ã®æ¯èŒ
| æ¹æ³ | æé©ãªçšé | é床ïŒ1 äžä»¶ã®ã¿ã€ã ã¹ã¿ã³ãïŒ | è€éã | |--------|----------|----------------------|------------| | ãªã³ã©ã€ã³å€æããŒã« | å°èŠæš¡ãªãããïŒ50 æªæºïŒ | 峿 | ãªã | | Bash ã«ãŒã | å°ãäžèŠæš¡ïŒ50ã1 äžïŒ | çŽ 30 ç§ | äœ | | xargs 䞊ååŠç | äžèŠæš¡ïŒ1 äžã10 äžïŒ | çŽ 10 ç§ | äœ | | Python | ä»»æã®ãµã€ãº | çŽ 2 ç§ | äž | | awk ã¹ããªãŒã | éåžžã«å€§èŠæš¡ïŒæ°çŸäžïŒ | çŽ 5 ç§ | äž | | SQL | ããŒã¿ããŒã¹ããŒã¿ | 峿 | äœ |
æ¥åžžçãªå°èŠæš¡ãªãããã«ã¯ãåœç€Ÿã® Unix ã¿ã€ã ã¹ã¿ã³ã倿ããŒã« ã䜿çšããŠãã ãããèªååãå€§èŠæš¡ãªããŒã¿ã»ããã«ã¯ãã¯ãŒã¯ãããŒã«åã£ãããã°ã©ãã³ã°ã¢ãããŒãã§å€æãã¹ã¯ãªããåããŠãã ããã