Я не могу найти формат для преобразования даты в строку с сокращением, например:
moment().format('MM/DD/YYYY hh:mm A z') преобразуется в 09/17/2019 05:00 PM
moment().format('MM/DD/YYYY hh:mm A z')
09/17/2019 05:00 PM
Есть ли способ преобразовать его в09/17/2019 05:00 AM PST?(где PSt - TZ моего браузера)
09/17/2019 05:00 AM PST
Вы можете использовать библиотеку moment-timezone (с данными часового пояса) и угадать часовой пояс пользователя, используя moment.tz.guess().
moment-timezone
moment.tz.guess()
console.log(appendTimezone('09/17/2019 05:00 PM', { timeZone : 'America/Los_Angeles', dateFormat : 'MM/DD/YYYY hh:mm A' })); function appendTimezone(timestamp, options) { options = options || {}; let zone = options.timeZone || moment.tz.guess(); let frmt = options.dateFormat || 'YYYY-MM-DDTHH:mm:ss.SSSZ'; return moment(timestamp, frmt).format(frmt) + ' ' + moment().tz(zone).format('z'); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.26/moment-timezone-with-data.min.js"></script>
const DATE_FORMAT = 'MM/DD/YYYY hh:mm A z'; let now = moment(), localTimeZone = moment.tz.guess(); let localTimeStamp = now.tz(localTimeZone); console.log(localTimeStamp.format(DATE_FORMAT)); let pacificTimeStamp = now.tz('America/Los_Angeles'); console.log(pacificTimeStamp.format(DATE_FORMAT));