Spec-Zone.ru › D3.js 5

d3-time-format

Этот модуль предоставляет JavaScript-реализацию функций strptime и strftime из стандартной библиотеки C и может использоваться для парсинга или форматирования дат в различных локально-зависимых представлениях. Для форматирования даты создайте форматер из спецификатора (строки с желаемыми директивами форматирования, обозначенными как %); затем передайте дату форматеру, который вернёт строку. Например, для преобразования текущей даты в читаемую строку:

var formatTime = d3.timeFormat("%B %d, %Y");
formatTime(new Date); // "June 30, 2015"

Аналогично, для преобразования строки обратно в дату создайте парсер:

var parseTime = d3.timeParse("%B %d, %Y");
parseTime("June 30, 2015"); // Tue Jun 30 2015 00:00:00 GMT-0700 (PDT)

Вы также можете реализовать более сложные условные форматы времени. Например, вот формат времени с несколькими шкалами, использующий интервалы времени:

var formatMillisecond = d3.timeFormat(".%L"),
    formatSecond = d3.timeFormat(":%S"),
    formatMinute = d3.timeFormat("%I:%M"),
    formatHour = d3.timeFormat("%I %p"),
    formatDay = d3.timeFormat("%a %d"),
    formatWeek = d3.timeFormat("%b %d"),
    formatMonth = d3.timeFormat("%B"),
    formatYear = d3.timeFormat("%Y");

function multiFormat(date) {
  return (d3.timeSecond(date) < date ? formatMillisecond
      : d3.timeMinute(date) < date ? formatSecond
      : d3.timeHour(date) < date ? formatMinute
      : d3.timeDay(date) < date ? formatHour
      : d3.timeMonth(date) < date ? (d3.timeWeek(date) < date ? formatDay : formatWeek)
      : d3.timeYear(date) < date ? formatMonth
      : formatYear)(date);
}

Этот модуль используется D3 шкалами времени для генерации удобочитаемых меток.

Установка

Если вы используете NPM, npm install d3-time-format. В противном случае, скачайте последнюю версию. Вы также можете загрузить напрямую с d3js.org, как отдельную библиотеку или как часть D3 4.0. Поддерживаются AMD, CommonJS и обычные среды. В обычной среде экспортируется d3 глобальная переменная:

<script src="https://d3js.org/d3-time.v1.min.js"></script>
<script src="https://d3js.org/d3-time-format.v2.min.js"></script>
<script>

var format = d3.timeFormat("%x");

</script>

Файлы локали расположены на unpkg и могут быть загружены с помощью d3.json. Например, для установки русского языка по умолчанию:

d3.json("https://unpkg.com/d3-time-format@2/locale/ru-RU.json", function(error, locale) {
  if (error) throw error;

  d3.timeFormatDefaultLocale(locale);

  var format = d3.timeFormat("%c");

  console.log(format(new Date)); // понедельник,  5 декабря 2016 г. 10:31:59
});

Попробуйте d3-time-format в вашем браузере.

Справочник по API

d3.timeFormat(specifier) Исходный код

Псевдоним для locale.format на локале по умолчанию.

d3.timeParse(specifier) Исходный код

Псевдоним для locale.parse на локале по умолчанию.

d3.utcFormat(specifier) Исходный код

Псевдоним для locale.utcFormat на локале по умолчанию.

d3.utcParse(specifier) Исходный код

Псевдоним для locale.utcParse на локале по умолчанию.

d3.isoFormat Исходный код

Полный форматер ISO 8601 UTC времени. Если доступно, этот метод будет использовать Date.toISOString для форматирования.

d3.isoParse Исходный код

Полный парсер ISO 8601 UTC времени. Если доступно, этот метод будет использовать конструктор Date для парсинга строк. Если вам нужна строгая проверка входного формата согласно ISO 8601, вы должны создать функцию парсера UTC:

var strictIsoParse = d3.utcParse("%Y-%m-%dT%H:%M:%S.%LZ");
locale.format(specifier) Исходный код

Возвращает новый форматировщик для данного строкового спецификатора. Строка спецификатора может содержать следующие директивы:

  • %a - сокращённое название дня недели.*
  • %A - полное название дня недели.*
  • %b - сокращённое название месяца.*
  • %B - полное название месяца.*
  • %c - локальная дата и время, например %x, %X.*
  • %d - день месяца, дополненный нулями [01,31].
  • %e - день месяца, дополненный пробелами [ 1,31]; эквивалентно %_d.
  • %f - микросекунды в виде десятичной числа [000000, 999999].
  • %H - час (24-часовой формат) в виде десятичного числа [00,23].
  • %I - час (12-часовой формат) в виде десятичного числа [01,12].
  • %j - день года в виде десятичного числа [001,366].
  • %m - месяц в виде десятичного числа [01,12].
  • %M - минута в виде десятичного числа [00,59].
  • %L - миллисекунды в виде десятичного числа [000, 999].
  • %p - либо AM, либо PM.*
  • %Q - миллисекунды с момента эпохи UNIX.
  • %s - секунды с момента эпохи UNIX.
  • %S - секунда в виде десятичного числа [00,61].
  • %u - день недели по понедельнику (ISO 8601) в виде десятичного числа [1,7].
  • %U - неделя года по воскресенью в виде десятичного числа [00,53].
  • %V - неделя года по ISO 8601 в виде десятичного числа [01, 53].
  • %w - день недели по воскресенью в виде десятичного числа [0,6].
  • %W - неделя года по понедельнику в виде десятичного числа [00,53].
  • %x - локальная дата, например %-m/%-d/%Y.*
  • %X - локальное время, например %-I:%M:%S %p.*
  • %y - год без столетия в виде десятичного числа [00,99].
  • %Y - год со столетием в виде десятичного числа.
  • %Z - смещение часового пояса, например -0700, -07:00, -07, или Z.
  • %% - буквальное значение процента (%).

Директивы, помеченные звёздочкой (*), могут быть подвержены влиянию определения локали.

Для %U, все дни в новом году, предшествующие первому воскресенью, считаются в неделе 0. Для %W, все дни в новом году, предшествующие первому понедельнику, считаются в неделе 0. Номера недель вычисляются с помощью interval.count. Например, 2015-52 и 2016-00 представляют понедельник, 28 декабря 2015, в то время как 2015-53 и 2016-01 представляют понедельник, 4 января 2016. Это отличается от спецификации даты ISO-недели (%V), которая использует более сложное определение!

Для %V, согласно странице справки strftime:

В этой системе недели начинаются с понедельника и нумеруются от 01 для первой недели до 52 или 53 для последней недели. Неделя 1 — это первая неделя, в которой четыре или более дней попадают в новый год (или, синонимично, неделя 01: первая неделя года, которая содержит четверг; или, неделя, в которой находится 4 января).

Знак %, указывающий на директиву, может быть немедленно последован модификатором заполнения:

  • 0 - заполнение нулями
  • _ - заполнение пробелами
  • - - отключение заполнения

Если модификатор заполнения не указан, по умолчанию используется 0 для всех директив, за исключением %e, для которой по умолчанию используется _. (В некоторых реализациях strftime и strptime директива может включать необязательную ширину поля или точность; эта функция пока не реализована.)

Возвращаемая функция форматирует указанную дату, возвращая соответствующую строку.

var formatMonth = d3.timeFormat("%B"),
    formatDay = d3.timeFormat("%A"),
    date = new Date(2014, 4, 1); // Thu May 01 2014 00:00:00 GMT-0700 (PDT)

formatMonth(date); // "May"
formatDay(date); // "Thursday"
locale.parse(specifier) Исходный код

Возвращает новый парсер для данного строкового спецификатора. Строка спецификатора может содержать те же директивы, что и locale.format. Директивы %d и %e считаются эквивалентными для парсинга.

Возвращаемая функция анализирует указанную строку, возвращая соответствующую дату или null, если строка не может быть обработана согласно спецификатору этого формата. Анализ строгий: если указанная строка не точно соответствует связанному спецификатору, этот метод возвращает null. Например, если связанный спецификатор — %Y-%m-%dT%H:%M:%SZ, то строка "2011-07-01T19:15:28Z" будет обработана как ожидается, но "2011-07-01T19:15:28", "2011-07-01 19:15:28" и "2011-07-01" вернут null. (Обратите внимание, что буквенное значение Z здесь отличается от директивы смещения часового пояса %Z.) Если требуется более гибкий парсер, попробуйте несколько форматов последовательно, пока один не вернёт ненулевое значение.

locale.utcFormat(specifier) Исходный код

Эквивалентно locale.format, за исключением того, что все директивы интерпретируются как Координированное универсальное время (UTC), а не по местному времени.

locale.utcParse(specifier) Исходный код

Эквивалентно locale.parse, за исключением того, что все директивы интерпретируются как Координированное универсальное время (UTC), а не по местному времени.

Локали

d3.timeFormatLocale(definition) Source

Возвращает объект locale для указанного definition с методами locale.format, locale.parse, locale.utcFormat, locale.utcParse. definition должен включать следующие свойства:

  • dateTime - спецификатор формата даты и времени (%c) (например, "%a %b %e %X %Y").
  • date - спецификатор формата даты (%x) (например, "%m/%d/%Y").
  • time - спецификатор формата времени (%X) (например, "%H:%M:%S").
  • periods - эквиваленты A.M. и P.M. (например, ["AM", "PM"]).
  • days - полные имена дней недели, начиная с воскресенья.
  • shortDays - сокращённые имена дней недели, начиная с воскресенья.
  • months - полные имена месяцев (начиная с января).
  • shortMonths - сокращённые имена месяцев (начиная с января).

Пример см. в Локализованная ось времени II.

d3.timeFormatDefaultLocale(definition) Source

Эквивалентно d3.timeFormatLocale, но также переопределяет d3.timeFormat, d3.timeParse, d3.utcFormat и d3.utcParse на новые методы форматирования и парсинга локали locale.format, locale.parse, locale.utcFormat и locale.utcParse. Если локаль не задана, по умолчанию используется английский (США).

Пример см. в Локализованная ось времени.

© 2010–2018 Michael Bostock
Licensed under the BSD License.
https://github.com/d3/d3-time-format

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API