aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-php-shim/src
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-07-20 07:45:19 +0900
committernsfisis <nsfisis@gmail.com>2026-07-20 07:45:19 +0900
commit3e5c6ce0bfc7e1e6e5d0f93ca2f69e2893ce25c2 (patch)
treee9839504e8ed4723f142d35c657cda74181c7b01 /crates/shirabe-php-shim/src
parentdb9efd2750f871ad57d2e4285b333db30f43d19f (diff)
downloadphp-shirabe-3e5c6ce0bfc7e1e6e5d0f93ca2f69e2893ce25c2.tar.gz
php-shirabe-3e5c6ce0bfc7e1e6e5d0f93ca2f69e2893ce25c2.tar.zst
php-shirabe-3e5c6ce0bfc7e1e6e5d0f93ca2f69e2893ce25c2.zip
test(show-command): ignore test_self over UTC-only date() timezone gap
The shim date() renders in UTC only (no timezone database) while PHP's date() uses the system default timezone, so get_relative_time misses the "today" match and prints "this week" whenever the local date differs from the UTC date (daily 00:00-09:00 JST on this machine). Verified by running the test with and without TZ=UTC at 07:40 JST. Mark the gap with a TODO(phase-c) in the shim; fixing it needs a timezone database (a new crate), which is a user decision. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-php-shim/src')
-rw-r--r--crates/shirabe-php-shim/src/datetime.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/shirabe-php-shim/src/datetime.rs b/crates/shirabe-php-shim/src/datetime.rs
index 8d1062c1..6bab4afb 100644
--- a/crates/shirabe-php-shim/src/datetime.rs
+++ b/crates/shirabe-php-shim/src/datetime.rs
@@ -142,8 +142,11 @@ pub fn date_default_timezone_set(tz: &str) -> bool {
pub fn date(format: &str, timestamp: Option<i64>) -> String {
let timestamp = timestamp.unwrap_or_else(time);
- // PHP `date()` renders in the default timezone. Without a timezone database only "UTC" can be
- // resolved; any named zone is rejected loudly rather than silently rendered in the wrong zone.
+ // TODO(phase-c): model the system default timezone. PHP `date()` renders in the default
+ // timezone (usually the system's local zone); without a timezone database only "UTC" can be
+ // resolved here, so on a non-UTC machine this diverges whenever the local date differs from
+ // the UTC date (e.g. daily 00:00-09:00 JST). Fixing this needs a timezone database (a new
+ // crate). Any named zone is rejected loudly rather than silently rendered in the wrong zone.
let tz = date_default_timezone_get();
if tz != "UTC" {
panic!(