Я получаю метку времени от стороннего API, которая выглядит следующим образом: 1540388730994.Однако мне сообщили, что эта временная метка находится в 'Europe/Amsterdam' часовом поясе.
1540388730994
'Europe/Amsterdam'
Мне нужно преобразовать эту временную метку в UTC, поскольку мы храним все наши даты в UTC.
Как это возможнов JavaScript?
Пока я пробовал:
const timestamp = 1540388730994 const timestampInUTC = moment.tz(timestamp, 'Europe/Amsterdam').utc().valueOf() console.log(timestamp, timestampInUTC)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.21/moment-timezone-with-data-2012-2022.min.js"></script>
Однако вы можете ясно видеть, что две выходные метки времени идентичны, тогда как я ожидал бы, что преобразование вычтет 1-2 часа, поскольку часовой пояс АмстердамаGMT + 2.
Что я здесь не так делаю?
Временные метки в числовом виде: всегда в UTC.Если по какой-то причине они вручную добавили / вычли его из-за смещения часового пояса, они делают это неправильно.Вы не видите никаких изменений от момента, потому что временная метка UTC является одним и тем же моментом времени, независимо от того, в каком часовом поясе вы представляете местный эквивалент времени. Если вы ожидали, что временная метка изменится, это будет представлять совершенно другой момент ввремя.