The pattern I have used to handle time zones is to pass a time zone offset (hours and minutes) to the Server Side Action through a dynamic field. In turn the dynamic field can then be populated with an offset determined in the client side environment. This closes the loop and tells the server “treat the data like it is in the passed in time zone”.
I have not had a chance to investigate whether client time zone information is part of
context.currentUser. Even if it was I’m not sure of the relevance for scheduled API workflows.