ralph-claude-code/lib/date_utils.sh
frankbria 70279c017e fix(date): ensure Linux date utility returns UTC timestamps
Add -u flag to GNU date command in get_iso_timestamp() to match
the macOS implementation and function documentation. Both platforms
now consistently return UTC timestamps in YYYY-MM-DDTHH:MM:SS+00:00
format.

Before: date -Iseconds (returned local time on Linux)
After:  date -u -Iseconds (returns UTC on Linux)
2025-12-31 16:48:24 -07:00

41 lines
1.2 KiB
Bash

#!/usr/bin/env bash
# date_utils.sh - Cross-platform date utility functions
# Provides consistent date formatting and arithmetic across GNU (Linux) and BSD (macOS) systems
# Get current timestamp in ISO 8601 format with seconds precision
# Returns: YYYY-MM-DDTHH:MM:SS+00:00 format
get_iso_timestamp() {
local os_type
os_type=$(uname)
if [[ "$os_type" == "Darwin" ]]; then
# macOS (BSD date)
# Use manual formatting and add colon to timezone offset
date -u +"%Y-%m-%dT%H:%M:%S%z" | sed 's/\(..\)$/:\1/'
else
# Linux (GNU date) - use -u flag for UTC
date -u -Iseconds
fi
}
# Get time component (HH:MM:SS) for one hour from now
# Returns: HH:MM:SS format
get_next_hour_time() {
local os_type
os_type=$(uname)
if [[ "$os_type" == "Darwin" ]]; then
# macOS (BSD date) - use -v flag for date arithmetic
date -v+1H '+%H:%M:%S'
else
# Linux (GNU date) - use -d flag for date arithmetic
date -d '+1 hour' '+%H:%M:%S'
fi
}
# Get current timestamp in a basic format (fallback)
# Returns: YYYY-MM-DD HH:MM:SS format
get_basic_timestamp() {
date '+%Y-%m-%d %H:%M:%S'
}