Используя Moment.js я могу'т превратить в правильный момент объект в объект Date с часовых поясов. Я могу'т получить правильную дату.
Пример:
var oldDate = new Date(),
momentObj = moment(oldDate).tz("MST7MDT"),
newDate = momentObj.toDate();
console.log("start date " + oldDate)
console.log("Format from moment with offset " + momentObj.format())
console.log("Format from moment without offset " + momentObj.utc().format())
console.log("(Date object) Time with offset " + newDate)
console.log("(Date object) Time without offset "+ moment.utc(newDate).toDate())
Используйте это, чтобы превратить момент объект в объект Date:
От http://momentjs.com/docs/#/displaying/as-javascript-date/
moment().toDate();
Дает:
Tue Nov 04 2014 14:04:01 GMT-0600 (CST)
Как долго, как вы настроите время-часовой пояс С данные для тех зон, которые вы хотите, Ваш код работает, как ожидалось.
Вы правильно преобразовывать данный момент на часовом поясе, что и отражено во второй строке вывода от momentObj.формат()
.
Переход на UTC не'Т просто напишите смещение, изменяется часовой пояс UTC. Если вы'ре собирается сделать это, вы не'т нужна оригинальная .называть ТЗ () на всех. Можно просто сделать
момент.мирового()`.
Возможно, вы просто пытаетесь изменить формат вывода строки? Если это так, то просто задайте параметры в формат `` метод:
momentObj.format("YYYY-MM-DD HH:mm:ss")
По поводу последних строк вашего кода - когда вы вернетесь к объекту дата
, используя современные()
, Вы отказываетесь от поведения moment.js и возвращаясь к JavaScript'ы поведения. Объект в JavaScript дата
всегда будут напечатаны в местном часовом поясе компьютере, он's работает на. Там's ничего moment.js могу сделать об этом.
Пару других мелочей:
А в данный момент конструктор можно взять "дата", как правило, лучше не использовать. И"сейчас", Не'т использовать момент(новая дата()). Вместо этого, просто использовать
момент()`. Оба будут работать, но это'с неоправданно избыточным. Если вы не парсинг из строки, передаю эту строку прямо на момент. Дон'т попытаться разобрать его на "дата" в первую очередь. Вы найдете момент'ы парсера на значительно более надежным.
Часовые пояса как MST7MDT там для обратной совместимости. Они исходят из зон с POSIX времени, и лишь немногие из них находятся в данных TZDB. Если это абсолютно необходимо, вы должны использовать ключ, таких как Америка/Денвер
.
.современные
действительно не работает для меня, так вот что я сделал :
futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:MM"))
надеюсь, что это помогает
Поскольку momentjs не имеет никакого контроля над JavaScript-объект Date, я нашел работу вокруг этого.
в
в
константное значение currentTime = новая дата(); константный convertTime = момент(текущее время).ТЗ(часовой пояс).формат (на"гггг-ММ-ДД чч:мм:СС" - а); константный convertTimeObject = новая дата(convertTime);
в
Это даст вам объект Date с преобразованным время
Мне нужна была информация о часовом поясе в моей дате. Я был первоначально используя момент.ТЗ(dateStr, 'Америка/Нью-Йорк').метод toString (); но потом я начал получать ошибки о кормлении этой строки обратно в момент.
Я попробовал `момент.ТЗ(dateStr, 'Америка/Нью-Йорк').современные (); но потом я потерял информацию часового пояса, который мне нужен.
Единственное решение, которое возвращено удобную дату строки с часовой пояс что может быть подается обратно в мгновение был момент.ТЗ(dateStr, 'Америка/Нью-Йорк').формат();`
момент обновил на JS Либ состоянию на 06/2018.
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london = newYork.clone().tz("Europe/London");
newYork.format(); // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format(); // 2014-06-01T17:00:00+01:00
если у вас есть свобода, чтобы использовать Angular5+, то лучше использовать функцию datePipe, чем функция часового пояса здесь. Я должен использовать moment.js потому что мой проект ограничения Angular2 только.
пусть dateVar = момент('каких-либо дату валютирования'); пусть newDateVar = dateVar.мирового().формат();
хороший и чистый!!!!
попробовать (без формат
шаг)
new Date(moment())
в
var d = moment.tz("2019-04-15 12:00", "America/New_York");
console.log( new Date(d) );
console.log( new Date(moment()) );
<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.23/moment-timezone-with-data.min.js"></script>
в
Вопрос немного непонятен. Я сделаю все возможное, чтобы объяснить это. Сначала вы должны понять, как использовать время-часовой пояс. По этому ответ здесь https://stackoverflow.com/questions/47046067/typeerror-moment-tz-is-not-a-function, Вы должны импортировать момент Из время-часовой пояс вместо минуту по умолчанию (конечно, вам придется НПМ установить время-часовой пояс первый!). Для ясности
const moment=require('moment-timezone')//import from moment-timezone
Теперь для того, чтобы использовать функцию часовых поясов, применение момент.ТЗ (на"date_string/момент () на", то"time_zone и") (посещение https://momentjs.com/timezone/ для более подробной информации). Эта функция будет возвращать объект с момента конкретном часовом поясе. Для ясности
var newYork= moment.tz("2014-06-01 12:00", "America/New_York");/*this code will consider NewYork as the timezone.*/
Теперь, когда вы пытаетесь конвертировать Нью-Йорке (момент объект) с момента'ов сегодня() (преобразование формата ISO 8601), вы получите время Гринвича,Великобритания. Для более подробной информации, перейдите по этой статье https://www.nhc.noaa.gov/aboututc.shtml, О UTC. Однако если вы просто хотите, чтобы ваш местному времени в таком формате (по нью-йоркскому времени, по этому примеру), просто добавить метод .мирового(правда) ,с арг истинно, на свой момент объекта. Для ясности
newYork.toDate()//will give you the Greenwich ,UK, time.
newYork.utc(true).toDate()//will give you the local time. according to the moment.tz method arg we specified above, it is 12:00.you can ofcourse change this by using moment()
Короче, момент.ТЗ считает часовом поясе вы укажите и сравнивает вашего местного времени с временем по Гринвичу, чтобы дать вам результат. Я надеюсь, это было полезно.