если у вас есть юзеры с разными таймзонами, и вам надо что бы они получали имейл ровно тогда когда нужно, то вам надо отсылать пачки имейлов каждый раз когда в вашем списке таймзон настает то самое указанное время.
но если вы собираете какую-то информацию и отсылаете ее, возможно прийдется собирать информацию отдельно для каждой нужной таймзоны что бы у юзера была актуальная инфа
Если у вас в базе есть таблица users и для каждого юзера вы храните таймзону, то крон должен запускаться каждый час и искать юзеров у которых сейчас к примеру 9 утра.
В Postgres это делается так: SELECT name, email, userTimezone
from users
WHERE date_part('hour', TIMEZONE(userTimezone, now()::timestamptz)) = 9