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)
41 lines
1.2 KiB
Bash
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'
|
|
}
|