diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-16 00:29:03 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-16 01:03:45 +0900 |
| commit | aad468e8b75ffc3e87ea6dfa22c53a8299fc08da (patch) | |
| tree | 8864fec7343dfb91c7c12e35a2989081ad197fd7 /crates/shirabe/src/console/application.rs | |
| parent | 2936cb809da433a92f267f3bc232d88ed4e315ac (diff) | |
| download | php-shirabe-aad468e8b75ffc3e87ea6dfa22c53a8299fc08da.tar.gz php-shirabe-aad468e8b75ffc3e87ea6dfa22c53a8299fc08da.tar.zst php-shirabe-aad468e8b75ffc3e87ea6dfa22c53a8299fc08da.zip | |
feat(php-shim): render human-facing timestamps in the local timezone
Split date() into date_utc() and date_local(), the latter resolving the
system's local timezone through the tzfile crate ($TZ, then
/etc/localtime, falling back to UTC when neither is readable). The
timestamps Composer renders for humans -- the GitHub OAuth token note,
the GitHub API rate limit reset time, the Perforce client spec fields and
the "today" check of the show command -- now go through date_local().
PHP resolves its default timezone from the date.timezone ini setting,
which Shirabe does not read, so date_default_timezone_get/set have no
input left to model and are dropped from the shim and its callers. The
resulting difference is recorded in docs/known-incompatibilities.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/console/application.rs')
| -rw-r--r-- | crates/shirabe/src/console/application.rs | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/crates/shirabe/src/console/application.rs b/crates/shirabe/src/console/application.rs index 3e4a746b..9a17868c 100644 --- a/crates/shirabe/src/console/application.rs +++ b/crates/shirabe/src/console/application.rs @@ -57,13 +57,12 @@ use crate::util::Silencer; use indexmap::IndexMap; use shirabe_php_shim::Catch as _; use shirabe_php_shim::{ - LogicException as ShimLogicException, PhpMixed, RuntimeException, bin2hex, chdir, - date_default_timezone_get, date_default_timezone_set, defined, dirname, disk_free_space, - extension_loaded, file_exists, file_get_contents, file_put_contents, function_exists, getcwd, - getmypid, glob, ini_set, is_array, is_dir, is_file, is_string, json_decode, - memory_get_peak_usage, memory_get_usage, microtime, php_regex, php_uname, posix_getuid, - random_bytes, realpath, restore_error_handler, round, str_replace, strpos, strtoupper, - sys_get_temp_dir, time, unlink, + LogicException as ShimLogicException, PhpMixed, RuntimeException, bin2hex, chdir, defined, + dirname, disk_free_space, extension_loaded, file_exists, file_get_contents, file_put_contents, + function_exists, getcwd, getmypid, glob, ini_set, is_array, is_dir, is_file, is_string, + json_decode, memory_get_peak_usage, memory_get_usage, microtime, php_regex, php_uname, + posix_getuid, random_bytes, realpath, restore_error_handler, round, str_replace, strpos, + strtoupper, sys_get_temp_dir, time, unlink, }; use shirabe_seld_json_lint::ParsingException; use shirabe_symfony_console::application::Application as BaseApplication; @@ -157,13 +156,6 @@ impl Application { ini_set("xdebug.scream", "0"); } - if function_exists("date_default_timezone_set") - && function_exists("date_default_timezone_get") - { - let tz = Silencer::call(|| Ok(date_default_timezone_get())).unwrap_or_default(); - date_default_timezone_set(&tz); - } - let io: std::rc::Rc<std::cell::RefCell<dyn IOInterface>> = std::rc::Rc::new(std::cell::RefCell::new(NullIO::new())); |
