У меня есть Date
объект. Как отобразить title
часть следующего фрагмента?
<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
У меня есть часть "относительного времени в словах" из другой библиотеки.
Я пробовал следующее:
function isoDate(msSinceEpoch) {
var d = new Date(msSinceEpoch);
return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}
Но это дает мне:
"2010-4-2T3:19"
javascript
datetime
iso8601
Джеймс А. Розен
источник
источник
new Date("xx").toISOString()
выдаетNaN-NaN-NaNTNaN:NaN:NaN.NZ
нативную реализацию выдает RangeException.См. Последний пример на странице https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :
источник
<abbr title="2010-04-02T14:12:07">
), не имеет часового пояса. Возможно, они хотели местное время, которое имело бы смысл для строки времени пользовательского интерфейса?Почти каждый метод to-ISO в сети сбрасывает информацию о часовом поясе, применяя преобразование к «Z» ulu time (UTC) перед выводом строки. Родной .toISOString () браузера также удаляет информацию о часовом поясе.
Это исключает ценную информацию, так как сервер или получатель всегда могут преобразовать полную дату ISO в время Zulu или в любой часовой пояс, который ему требуется, при этом получая информацию о часовом поясе отправителя.
Лучшее решение, с которым я столкнулся, - это использовать библиотеку JavaScript Moment.js и использовать следующий код:
Чтобы получить текущее время ISO с информацией о часовом поясе и миллисекундами
Чтобы получить время ISO собственного объекта JavaScript Date с информацией о часовом поясе, но без миллисекунд
Это может быть объединено с Date.js для получения функций, таких как Date.today (), результат которых затем может быть передан в данный момент.
Строка даты, отформатированная таким образом, является JSON-компилятором и хорошо подходит для хранения в базе данных. Python и C #, похоже, это нравится.
источник
moment(new Date()).format()
. Msgstr "Начиная с версии 1.5.0, формат момента вызова # без формата по умолчанию будет ... формат ISO8601YYYY-MM-DDTHH:mm:ssZ
". Док. Прокрутите вверх с сайта momentjs.com/docs/#/displaying/fromnowmoment().format()
"2015-03-04T17:16:05+03:00"
(new Date()).toISOString()
"2015-03-04T14:16:24.555Z"
Был задан вопрос о формате ISO с пониженной точностью. Вуаля:
Предполагая, что завершающий Z требуется, в противном случае просто опустите.
источник
Самый короткий, но не поддерживается Internet Explorer 8 и более ранними версиями:
источник
Если вам не нужна поддержка IE7, это хороший и лаконичный хак:
источник
toJSON
вместо этого используйте метод даты .JSON.stringify
в любом случае использует его под одеялом.JSON
объект, хотя не в некоторых режимах совместимости. См. Stackoverflow.com/questions/4715373/….toISOString()
?Обычно я не хочу отображать дату в формате UTC, так как клиенты не любят делать преобразования в своей голове. Чтобы отобразить локальную дату ISO, я использую функцию:
Приведенная выше функция пропускает информацию о смещении часового пояса (кроме случаев, когда местное время указано в формате UTC), поэтому я использую приведенную ниже функцию, чтобы показать локальное смещение в одном месте. Вы также можете добавить его вывод к результатам из вышеприведенной функции, если хотите показывать смещение каждый раз:
toLocalIsoString
используетpad
. При необходимости он работает почти как любая функция пэда, но для полноты картины я использую:источник
После «Т» отсутствует знак «+»
должен сделать это.
Для ведущих нулей вы можете использовать это здесь :
Используя это так:
источник
источник
Проблема с toISOString заключается в том, что он дает дату и время только как "Z".
ISO-8601 также определяет дату и время с разницей в часовом поясе в часах и минутах в таких формах, как 2016-07-16T19: 20: 30 + 5: 30 (когда часовой пояс впереди UTC) и 2016-07-16T19: 20: 30-01 : 00 (когда часовой пояс отстает от UTC).
Я не думаю, что было бы хорошей идеей использовать другой плагин, moment.js для такой маленькой задачи, особенно когда вы можете получить его с помощью нескольких строк кода.
Как только у вас будет смещение часового пояса в часах и минутах, вы можете добавить строку даты и времени.
Я написал пост в блоге: http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes
источник
Я бы просто использовал это небольшое расширение для
Date
- http://blog.stevenlevithan.com/archives/date-time-formatисточник
Я смог получить результат ниже с очень меньшим количеством кода.
Вывод:
источник
Я где-то нашел основы Stack Overflow (я думаю, что это было частью какого-то другого игры в Stack Exchange) и улучшил его, чтобы он работал и в Internet Explorer 10 или более ранней версии. Это некрасиво, но это делает работу.
источник
Чтобы расширить великолепный и лаконичный ответ Шона, добавив немного сахара и современный синтаксис:
Тогда, например.
источник