static DEFAULT_TIMEZONE: std::sync::Mutex> = std::sync::Mutex::new(None); pub fn date_create(s: &str) -> chrono::ParseResult> { todo!() } /// PHP: \DATE_RFC3339 ("Y-m-d\TH:i:sP"). pub const DATE_RFC3339: &str = "%Y-%m-%dT%H:%M:%S%:z"; /// PHP: \DATE_ATOM (equivalent to \DATE_RFC3339). pub const DATE_ATOM: &str = DATE_RFC3339; /// Convert PHP-compatible date time format to strftime-compatible format. /// Only the patterns Composer actually passes are supported; anything else panics. pub fn date_format_to_strftime(format: &str) -> &'static str { match format { "Y-m-d H:i:s" => "%Y-%m-%d %H:%M:%S", "Y-m-d" => "%Y-%m-%d", "Ymd" => "%Y%m%d", other => panic!("Unsupported PHP date format: {other:?}"), } } pub fn strtotime(_time: &str) -> Option { todo!() } pub fn time() -> i64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) .unwrap() .as_secs() as i64 } pub fn microtime(_get_as_float: bool) -> f64 { todo!() } // PHP defaults to "UTC" when no default timezone has been configured. pub fn date_default_timezone_get() -> String { DEFAULT_TIMEZONE .lock() .unwrap() .clone() .unwrap_or_else(|| "UTC".to_string()) } pub fn date_default_timezone_set(tz: &str) -> bool { *DEFAULT_TIMEZONE.lock().unwrap() = Some(tz.to_string()); true } pub fn date(_format: &str, _timestamp: Option) -> String { todo!() }