#!/usr/bin/env bash
set -e
# Usage: ./to_epoch.sh <YYYY/MM/DD|YYYY/MM/DD:HH:MM:SS> [TIMEZONE]
INPUT_STAMP="$1"
TARGET_TZ="${2:-UTC}"
if [ -z "$INPUT_STAMP" ]; then
echo "Usage: $0 <YYYY/MM/DD|YYYY/MM/DD:HH:MM:SS> [TIMEZONE]"
echo "Examples:"
echo " $0 2026/12/31"
echo " $0 2026/12/31:18:30:00"
echo " $0 2026/12/31:18:30:00 America/New_York"
exit 1
fi
# Extract date and time parts
if [[ "$INPUT_STAMP" == *":"* ]]; then
# Splits on the first colon separating the date from time
DATE_PART="${INPUT_STAMP%%:*}"
TIME_PART="${INPUT_STAMP#*:}"
else
DATE_PART="$INPUT_STAMP"
TIME_PART="23:59:59"
fi
DATETIME_STR="${DATE_PART} ${TIME_PART}"
# Detect GNU date vs BSD/macOS date
if date --version >/dev/null 2>&1; then
# GNU date (Ubuntu, Rocky, SLES)
EPOCH=$(TZ="$TARGET_TZ" date -d "$DATETIME_STR" +%s 2>/dev/null)
else
# BSD / macOS date
EPOCH=$(TZ="$TARGET_TZ" date -j -f "%Y/%m/%d %H:%M:%S" "$DATETIME_STR" +%s 2>/dev/null)
fi
if [ -z "$EPOCH" ]; then
echo "Error: Failed to parse date string '$INPUT_STAMP'. Ensure format is YYYY/MM/DD or YYYY/MM/DD:HH:MM:SS." >&2
exit 1
fi
echo "$EPOCH"
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #1 | 33444 | Claude (AI Agent by Anthropic) | Initial population of r26.1.0.BETA from main. | ||
| //p4-sdp/main/Unsupported/Samples/bin/to_epoch.sh | |||||
| #1 | 33433 | Claude (AI Agent by Anthropic) |
Copy Up from //p4-sdp/dev into //p4-sdp/main. This is the first-ever population of main under the new Streams-based depot structure -- main has held zero files/history until now, since no release has ever gone through this process before. 463 files, covering the entire 2026.1 cycle: rebranding (SDP-1379), Secure By Default (SDP-1350), OrgName-aware auth.id/ServerID (SDP-1286), RCS-keyword version identification (SDP-1161/SDP-799), the Streams-native release process redesign itself (Task 5), the opt_perforce_sdp_backup.sh false-error fix, the P4D 2026.1 test-suite targeting, refreshed P4*.json files, and the fixed-main-URL/isolate-downloads tarball design -- everything accumulated in dev's history to date. Isolated paths (ai_dev_support/, Version, doc/*.html, doc/*.pdf, doc/gen/*.man.txt, doc/gen/sdp_install.cfg, Unsupported/doc/*.html, Unsupported/doc/*.pdf, downloads/) correctly did not come along -- each stream maintains those independently by design. Per the Merge Down/Copy Up flow (Step 9 confirmed clean, nothing to merge), this is an unconditional, all-or-nothing copy of dev's content -- this is the first Streams-based SDP release, being rehearsed step by step per the release process doc. Agent: Claude Code, Model: Claude Sonnet 5 (claude-sonnet-5), operating as bot_Claude_Anthropic. |
||
| //p4-sdp/dev/Unsupported/Samples/bin/to_epoch.sh | |||||
| #1 | 33409 | Claude (AI Agent by Anthropic) |
Copy Up from //p4-sdp/dev_rebrand into //p4-sdp/dev. This is the first promotion of dev_rebrand's work into dev since dev_rebrand was created (2025-05-24) -- 303 files, covering the entire 2026.1 rebranding effort (SDP-1379), the Secure By Default adaptation (SDP-1350), OrgName-aware auth.id/ServerID (SDP-1286), RCS-keyword version identification (SDP-1161/SDP-799), and the Streams-native release process redesign (Task 5) done this session, plus everything else accumulated in dev_rebrand's history before this session. Per the Merge Down/Copy Up flow, this is intentionally a full, unconditional blast-replace of dev's content from dev_rebrand -- all selectivity/care happened in the preceding Merge Down (dev -> dev_rebrand, changes 33407-33408), which absorbed Robert Cowham's independent dev-side work first so nothing of his is lost by this Copy Up. Two files are worth calling out since they might look alarming in isolation: - tools/mdcu.sh is deleted -- intentional, retired this session in favor of the two direct Streams commands now documented in doc/ReleaseProcessOverview.md. - tools/ReleaseProcessOverview.md is deleted -- this is a stale relic of a file move dev_rebrand made back in 2025-05-24 (tools/ -> doc/) that was never previously propagated to dev; the current, fully-rewritten doc/ReleaseProcessOverview.md is added/updated correctly by this same changelist. |
||
| //p4-sdp/dev_rebrand/Unsupported/Samples/bin/to_epoch.sh | |||||
| #1 | 33190 | C. Thomas Tyler |
Added sample epoch time conversion that works on many platforms. Requirements: * Works on Ubuntu 20-26, Rocky 8-10, SLES 15, and BSD and Mac (at least modern Mac, e.g. Tahoe) * Accepts a datetamp in the form of YYYY/MM/DD or YYYY/MM/DD:HH:MM:SS (if the hour/minute/second is omitted, it defaults to 23:59:59). * Provide an optional way to specify time zone, with UTC as the default. Key Highlights * Cross-Platform Compatibility: GNU Linux uses date -d, while BSD/macOS uses date -j -f "%Y/%m/%d %H:%M:%S". The if date --version check handles the branch automatically without relying on uname. * Flexible Input: Handles both YYYY/MM/DD and YYYY/MM/DD:HH:MM:SS by leveraging shell parameter expansion (${INPUT_STAMP%%:*} and ${INPUT_STAMP#*:}). * Timezone Safety: Sets TZ="$TARGET_TZ" per execution without mutating the caller's global shell environment. |
||