Getting wp_timezone undefined within a namespace

Thank you Tom J Nowell for the insightful comment above.

Turns out that wp_timezone is a relatively recent addition to WordPress, and didn’t exist in the version of WP I was developing in. It was added, as the Changelog says, in v5.3. I was using v5.2.

The function itself:

function wp_timezone() {
    return new DateTimeZone( wp_timezone_string() );
}

Simpy wraps the result of wp_timezone_string in a native php DateTimeZone object. The wp_timezone_string was also added in v5.3.

Since this is a brand new plugin, I’m not going to support older version of WordPress. For pragmatic reasons, and in solidarity with the movement to encourage users to upgrade WP environments, I have also opted to not support versions of php (like v5.6) that are past their End of Life.