Разные устройства могут иметь разные настройки часовых поясов и локализации, что может привести к различным отображениям даты и времени, даже если ваши данные приводятся к UTC. Рассмотрим несколько причин, почему функция может возвращать разные даты на разных устройствах:
1. **Настройки часового пояса**: Хотя вы используете `timeZone: 'UTC'` при форматировании даты с помощью `toLocaleString`, если на устройствах есть различия в настройках часового пояса, это может привести к путанице. Убедитесь, что все устройства действительно используют UTC.
2. **Локализация**: Настройки локализации также могут вызывать различия. В разных браузерах или на разных устройствах могут быть установлены разные языковые настройки, что может влиять на вывод строки.
3. **Часовой пояс в самой функции**: Если в JavaScript вы не указываете временную зону, то результат может зависеть от системного часового пояса. Убедитесь, что результат возвращается в формате UTC.
4. **Правильность данных**: Убедитесь, что блоки данных, которые вы запрашиваете, имеют правильные и ожидаемые метки времени. Если данные на разных устройствам действительно разные, это может быть признаком проблемы на стороне источника данных.
5. **Кеширование или состояние гонки**: В некоторых случаях, если данные кешируются, вы можете получить разные результаты в зависимости от того, когда и какие данные были запрошены.
Если вы уверены, что используете UTC и формируете дату корректно, попробуйте добавить отладку внутри функции, например, выводить значения `block.timestamp`, `date`, а также результирующий `toLocaleString`, чтобы лучше понять, где именно возникает расхождение.
Также проверьте, использует ли ваше приложение на всех устройствах одинаковую версию браузера и настройки, так как различия в браузерах могут повлиять на интерпретацию JavaScript.