В браузерном коде использую такую функцию:
async function getDateFromBlock(blockNumber: number) {
const walletProvider = appKit.provider!
const provider = new BrowserProvider(walletProvider)
const block = await provider.getBlock(blockNumber)
let date = new Date(block!.timestamp * 1000)
// вычитаю один день для корректности данных
date = new Date(date.getTime() - 24 * 60 * 60 * 1000)
return date.toLocaleString('en-US', { year: 'numeric', month: 'short', day: 'numeric', timeZone: 'UTC' })
}
Как видите, использую UTC таймзону и в 99 процентов случаях функция работает нормально и возвращает данные за предыдущее дни.
Но у некоторых пользователей отражаются странные даты.
Вижу тут два варианта, где функция работает не как ожидается:
1.
date.toLocaleString()
- на каких-то машинах особые настройки даты и времени.
2.
const provider = new BrowserProvider(walletProvider)
- какой-то странный провайдер.
Буду рад, если поделитесь опытом, может кто-то сталкивался.