You get a traffic spike alert with timestamps in your local timezone (PDT or PST), but your access.log entries are in UTC. Here's how to quickly convert and grep the right window.
Pacific Daylight Time (PDT) is UTC−7. Pacific Standard Time (PST) is UTC−8.
Convert a local time to UTC right in your terminal:
# Linux (GNU date)
# PDT (UTC-7) → UTC: e.g. 4:52 AM PDT → 11:52 AM UTC
date -d "4:52 AM PDT" -u +"%H:%M"
# PST (UTC-8) → UTC: e.g. 4:52 AM PST → 12:52 PM UTC
date -d "4:52 AM PST" -u +"%H:%M"
macOS ships with BSD date, which doesn't support -d. Use Python instead — no install needed:
# macOS — PDT (UTC-7) to UTC
python3 -c "
from datetime import datetime, timezone, timedelta
t = datetime.now().replace(hour=4, minute=52, tzinfo=timezone(timedelta(hours=-7)))
print(t.astimezone(timezone.utc).strftime('%H:%M'))
"
# → 11:52
# macOS — PST (UTC-8) to UTC
python3 -c "
from datetime import datetime, timezone, timedelta
t = datetime.now().replace(hour=4, minute=52, tzinfo=timezone(timedelta(hours=-8)))
print(t.astimezone(timezone.utc).strftime('%H:%M'))
"
# → 12:52
Or install GNU coreutils via Homebrew to get the Linux-style date:
brew install coreutils
# then use gdate instead of date:
gdate -d "4:52 AM PDT" -u +"%H:%M"
Once you have the UTC time, grep for a range using a regex character class on the minutes:
# Match 11:32 through 11:39 UTC
grep -E "11:3[2-9]:" /var/log/nginx-proxy/access.log
# Match 11:32 through 11:45 UTC (spanning tens digit)
grep -E "11:(3[2-9]|4[0-5]):" /var/log/nginx-proxy/access.log
# Match an entire hour (11:00–11:59)
grep -E "11:[0-5][0-9]:" /var/log/nginx-proxy/access.log
You get a Slack alert at 4:52 AM PDT. Here's the full flow:
# Step 1: find the UTC equivalent (macOS)
$ python3 -c "
from datetime import datetime, timezone, timedelta
t = datetime.now().replace(hour=4, minute=52, tzinfo=timezone(timedelta(hours=-7)))
print(t.astimezone(timezone.utc).strftime('%H:%M'))
"
11:52
# Step 2: grep a ±5 minute window around 11:52 UTC
grep -E "11:(4[7-9]|5[0-7]):" /var/log/nginx-proxy/access.log
date is BSD — use Python or gdate (Homebrew) instead of date -d