Преобразование строчных или числовых значений времени в формат даты
Значения времени ваших временных данных рекомендуется хранить в поле даты. Это особый тип поля базы данных, предназначенный специально для хранения информации о времени и дате. Он наиболее эффективен с точки зрения скорости обработки запроса и поддерживает более сложные запросы в базе данных по сравнению с вариантами хранения значений времени в числовом или строчном поле.
Если у вас есть значения времени, хранящиеся в строчном или числовом поле, вы можете при желании конвертировать эти строчные или числовые поля (типа short, long, float или double) в поле даты с помощью инструмента геообработки Преобразовать поле времени (Convert Time Field). Инструмент геообработки Преобразовать поле времени (Convert Time Field)предоставляет гибкую возможность задавать стандартный или пользовательский рисунок формата времени, используемый для интерпретации значений даты и времени и их преобразования в формат даты для эффективного использования в ArcGIS. При хранении значений времени в строчном или числовом поле следует придерживаться одного из стандартных поддерживаемых строчных или числовых форматов. Может оказаться, однако, что есть значения времени, хранящиеся в строчном поле, имеющем пользовательский формат времени, например, Tuesday, August 20, 2002.
Модуль ArcGIS Tracking Analyst предоставляет аналогичную гибкую возможность задания стандартного или пользовательского рисунка формата времени для интерпретации значений даты и времени в ваших данных. Обсуждаемые здесь концепции равным образом относятся к использованию модуля Tracking Analyst.
Стандартные форматы, поддерживаемые инструментом геообработки Преобразовать поле времени (Convert Time Field), несложно соблюдать. Однако, если есть значения времени, хранящиеся в строчном поле, имеющем пользовательский формат даты и/или времени, необходимо иметь представление о концепциях создания пользовательского рисунка формата даты и/или времени, который будет использоваться для интерпретации данных. Например, при использовании инструмента геообработки Преобразовать поле времени (Convert Time Field) для преобразования значения времени Вторник, 20 августа 2002 г., хранящегося, как строка, в формат даты, необходимо указать формат входного времени в виде дддд, ММММ дд, гггг.
- При использовании инструмента геообработки Преобразовать поле времени (Convert Time Field) список стандартных поддерживаемых форматов входного времени меняется в зависимости от того, хранятся ли входные значения времени в строчном или числовом поле (short, long, float или double).
- Инструмент геообработки Преобразовать поле времени (Convert Time Field) позволяет задавать пользовательские форматы даты и/или времени, только если значения времени хранятся в строчном поле. Когда значения времени хранятся в числовых полях, пользовательские форматы даты и/или времени не поддерживаются.
Рисунки формата даты и времени
Рисунок формата даты и/или времени — это строка текста, которая используется для интерпретации значений данных, содержащих информацию о дате и/или времени. Каждый рисунок формата состоит из комбинации форматов из доступных типов формата. Примерами типов формата являются День недели, Месяц, Час и Секунда. В одном рисунке формата даты и/или времени следует использовать только один формат из каждого типа формата. При этом необязательно включать каждый тип формата в рисунок формата. Например, очень часто в рисунок формата даты включают только информацию о Годе, Месяце и Дне месяца, без информации о времени дня.
Рисунок формата может содержать только информацию о времени, только информацию о дате или комбинированную информацию о дате и времени. Рисунки формата могут также включать разделители, такие как запятые, которые можно использовать для разделения форматов, используемых в рисунке формата.
В общем случае, вам нужно проанализировать ваши пользовательские данные и определить подходящий рисунок формата даты и/или времени для интерпретации ваших данных. Примеры внизу дают представление о разнообразии возможных рисунков форматов для интерпретации даты и времени в различных форматах.
Пример значения данных | Рисунок формата |
---|---|
30/05/1978 02:34:56 | dd/MM/yyyy HH:mm:ss |
02.04.2010 14:39:28 | M/d/yyyy h:mm:ss tt |
06:05:12 | h:mm:ss tt |
23:31:18.345 | HH:mm:ss.s |
Вторник, 20 августа 2002 г. | dddd, MMMM dd, yyyy |
Среда, 31 августа 1994 г. | ddd, MMM dd yyyy |
03281999030456 | MMddyyyyHHmmss |
Форматы даты и времени
В следующей таблице приведены форматы, которые можно использовать для создания рисунков формата даты и/или времени для интерпретации пользовательских данных.
Формат | Тип формата | Описание (Description) |
---|---|---|
d | День месяца |
День месяца, указанный цифрами, без нуля впереди для одноразрядных значений. |
dd | День месяца |
День месяца, указанный цифрами, с нулем впереди для одноразрядных значений. |
ddd | День недели |
Трехбуквенное сокращение названия дня недели. Функция использует сокращения, принятые в заданном языке (регионе), например, Mon в Английский (США). Подсказка: При интерпретации значения даты проверка дней недели не выполняется. Поэтому не имеет значения, соответствует ли день недели, указанный в ваших данных, дате, представленной в значении данных. |
dddd | День недели |
Полное название дня недели. Функция использует полные названия дней, принятые в заданном языке (регионе), например, Monday в Английский (США). Подсказка: При интерпретации значения даты проверка дней недели не выполняется. Поэтому не имеет значения, соответствует ли день недели, указанный в ваших данных, дате, представленной в значении данных. |
M | Месяц |
Месяц, указанный цифрами, без нуля впереди для одноразрядных значений. |
MM | Месяц |
Месяц, указанный цифрами, с нулем впереди для одноразрядных значений. |
MMM | Месяц |
Трехбуквенное сокращение названия месяца. Функция использует сокращенные названия месяцев, принятые в заданном языке (регионе), например, Nov в Английский (США). |
MMMM | Месяц |
Полное название месяца. Функция использует полные названия месяцев, принятые в заданном языке (регионе), например, November для Английский (США) и Noviembre для Испанский (Испания). |
y | Год |
Две последние цифры года, без указания нуля впереди для значений, меньших 10. Подсказка: Таким образом, можно представить значения года в диапазоне 1950 — 2049. Значение, меньшее или равное 49, будет интерпретироваться, как относящееся к 21-му веку, например, 2032 г. Значение, большее или равное 50, будет интерпретироваться, как относящееся к 20-му веку, например, 1967 г. |
yy | Год |
Две последние цифры года с нулем впереди для значений года, меньших 10. Подсказка: Таким образом, можно представить значения года в диапазоне 1950—2049. Значение, меньшее или равное 49, будет интерпретироваться, как относящееся к 21-му веку, например, 2032 г. Значение, большее или равное 50, будет интерпретироваться, как относящееся к XX веку, например, 1967 г. |
yyy | Год | Три цифры года. Таким образом можно представить значения года в диапазоне 1-999. |
yyyy | Год |
Четыре цифры года. |
gg | Эра |
Строка периода/эры. Функция использует значения эры, принятые в заданном языке (регионе). |
h | Час |
Значение часа без нуля впереди для одноразрядных значений; 12-часовая шкала. |
H | Час |
Значение часа без нуля впереди для одноразрядных значений; 24-часовая шкала. |
hh | Час |
Значение часа с нулем впереди для одноразрядных значений; 12-часовая шкала. |
HH | Час |
Значение часа с нулем впереди для одноразрядных значений; 24-часовая шкала. |
m | Минута |
Число минут без нуля впереди для одноразрядных значений. |
mm | Минута |
Число минут с нулем впереди для одноразрядных значений. |
s | Секунда |
Число секунд без нуля впереди для одноразрядных значений. |
ss | Секунда |
Число секунд с нулем впереди для одноразрядных значений. |
s.s | Секунда | Число секунд, включая доли секунды, без нуля впереди для одноразрядных значений. Хотя в формате указан только один десятичный знак, можно использовать любое число десятичных знаков. Внимание: Точность значений с долями секунды ограничена точностью, которая поддерживается для типа данных поля времени. Например, если типом данных поля времени является float или double, могут возникнуть неточности, связанные с округлением. |
ss.s | Секунда | Число секунд, включая доли секунды, с нулем впереди для одноразрядных значений. Хотя в формате указан только один десятичный знак, можно использовать любое число десятичных знаков. Внимание: Точность значений с долями секунды ограничена точностью, которая поддерживается для типа данных поля времени. Например, если типом данных поля времени является float или double, могут возникнуть неточности, связанные с округлением. |
t | Маркер времени |
Односимвольная строка маркера времени, такая как A или P. |
tt | Маркер времени |
Многосимвольная строка маркера времени, такая как AM или PM. |
Разделители
Разделители — это символы, используемые для разделения информации в текстовых значениях данных. В качестве разделителей обычно используют запятые (,), двоеточие (:) и пробелы (), однако нет никаких ограничений на использование других разделителей для создания рисунков форматов. Можно также создавать рисунки форматов без разделителей. Обычно это требуется при интерпретации даты и времени, хранящихся в числовых полях, потому что большинство обычно используемых разделительных символов в них не допускаются.
В редких случаях может оказаться, что разделители, используемые в данных, конфликтуют с форматами из вышеприведенной таблицы. В этих немногочисленных случаях можно использовать одиночные кавычки для изолирования разделителей в рисунке формата. В общем случае, одиночные кавычки для изолирования разделителей в рисунке формата допустимы, однако рекомендуется использовать их, только если есть риск конфликта. Эти концепции проиллюстрированы в примерах ниже.
Пример значения данных | Рисунок формата | Интерпретируемые дата или время (отображаемые в виде MM/dd/yyyy или HH:mm:ss) |
---|---|---|
месяц12день30год2010 | 'месяц'MM'день'dd'год'yyyy | 12/30/2010 |
30/12/2010 | ddMMyyyy | 12/30/2010 |
Время:18ч6мин3сек | 'Время:'h'ч'm'мин's'сек' | 18:06:03 |
18:6:3 | HH:m:s | 18:06:03 |
Язык (регион)
Заданный язык (регион) важен, поскольку определяет допустимые значения данных для полных представлений некоторых форматов даты в таблице вверху. Например, значение November будет правильно интерпретировано для MMMM, только при выборе англоязычного региона. В некоторых случаях, когда в используемом рисунке формата отсутствуют полные представления, язык (регион) может не иметь значения для интерпретации даты. Однако, важно отметить, что язык (регион) может все же влиять на интерпретацию указателей AM и PM. Если указатели AM или PM не определены, будут использоваться указатели AM и PM по умолчанию для данного языка (региона).
Язык (регион) не влияет на форматы, используемые для создания рисунков формата. Другими словами, символ M (или MM, MMM, MMMM) используется для представления месяцев независимо от выбранного языка (региона). В примерах ниже иллюстрируется использование языка (региона) для интерпретации дат.
Значение данных | Рисунок формата | Язык (регион) | Интерпретируемая дата (MM/dd/yyyy) |
---|---|---|---|
30 ноября 2010 г. | MMMM dd, yyyy | Английский (США) | 11/30/2010 |
30 ноября 2010 г. | MMMM dd, yyyy | Испанский (Испания) | 11/30/2010 |
Пон, 22 Фев 2010 г. | ddd, MMM dd, yyyy | Английский (США) | 2/22/2010 |
30/12/2010 | dd/M/yyyy | Любой язык (регион) | 12/30/2010 |
AM и PM указатели
Стандартные маркеры времени, или AM и PM указатели, существуют для каждого языка (региона). Однако, некоторые из инструментов в ArcGIS предоставляют гибкую возможность определения пользовательских маркеров времени. Если в вашем рисунке формата имеются маркеры времени (t или tt), то необходимо определить символы, используемые для их представления. Важно отметить, что маркеры времени уместны только в рисунках формата, использующих 12-часовую шкалу (h или hh). Они не подходят для рисунков форматов с 24-часовой шкалой (H или HH). Если вы не определили ваши собственные маркеры времени, будут использоваться стандартные маркеры времени для выбранного языка (региона). Для определения пользовательских указателей AM и PM, поле времени должно иметь текстовый тип данных поля. В примерах внизу, иллюстрирующих эти концепции, для простоты используется только PM указатель. Те же концепции справедливы для AM указателя.
Значение данных | Рисунок формата | PM указатель | Интерпретируемое время (HH:mm:ss) |
---|---|---|---|
18:12:34 | h:mm:ss t | P | 18:12:34 |
18:12:34 | h:mm:ss tt | после обеда | 18:12:34 |
6:12:34 | H:mm:ss | PM | 6:12:34 |
18:12:34 | h:mm:ss tt | PM | 18:12:34 |