Allow user to set timezone from within Craft when entering a time in a date/time field
I solved that by adding a dropdown field to user profiles where I allowed users to select timezone and then in custom module set the selected timezone like this:
class SiteModule extends Module
{
   public function __construct($id, $parent = null, array $config = [])
   {
       // Set correct Timezone
       $currentUser = Craft::$app-&gt;getUser();
       if ($currentUser) {
           $user = $currentUser-&gt;getIdentity();
           $timezone = null;
           if ($user-&gt;userTimeZone-&gt;value) $timezone = $user-&gt;userTimeZone-&gt;value;
           if ($timezone) {
               Craft::$app-&gt;setTimeZone($timezone);
           }
       }

       ...

If user is not logged in or does not have a timezone set Craft will use the system timezone for those users.
Timezone dropdown values are in the form 'America/Chicago'.