ГОСТ Р ИСО 21090—2016
7.8.13 Тип данных TS (момент времени)
7.8.13.1 Описание
Специализация типа данных QTY
Определение: величина, указывающая момент на оси естественного времени. Момент времени
чаще всего представляют как календарное выражение.
7.8.13.2 Синтаксис ИСО/МЭК 11404
type TS - class {
validTimeLow : characterstring,
validTimeHigh :characterstring,
controlInformationRoet : characterstring,
controlInformationExtension : characterstring,
nullKlavor : Null Flavor,
updateMode : L’pdateMode,
flavorld : Set (characterstrir.g),
expression : ED,
origmalText : ED.TEXT,
uncertainty : QTY,
uncertaintyType : UncertaintyType,
uncertainRange : IVL(QTY)
value : characterstrir.g
7.8.13.3 Атрибуты
7.8.13.3.1value : String: значение типа данных TS. Атрибут value представляет собой строку в
формате «ГГГГ[ММ[ДЦ[ЧЧ[ММ[СС[.С(С[С[СШШ]])[*/-ППпп»т соответствующую ограничению стандарта
ИСО 8601, определенному в раздело 32 (всемирное время) стандарта ИСО 8824 (ASN.1). Этот формат
должен использоваться с необходимой степенью точности.
7.8.13.4 Равенство
Два непустых значения типа данных TS равны только в том случае, если попарно равны их атри
буты time и precision либо их интервалы неопределенности uncertainRange не пусты, не имеют причин
пустоты и равны. Если у обоих значений типа TS указаны часовые пояса, то перед сравнением их
значения должны быть приведены к одному часовому поясу. Если часовой пояс указан только у одного
значения типа TS. то результатом сравнения является признак пустоты с кодом NI.
7.8.13.5 Инварианты:
- если значение типа TS не имеет причины пустоты nullFlavor. то атрибуты value или uncertainRange
должны присутствовать:
- если атрибут value присутствует, должен быть указан по меньшей мере полный год;
- атрибуты uncertainty должны иметь тип данных PQ с единицами времени;
- атрибуты value и uncertainRange не могут одновременно иметь значение.
Представление инвариантов на языке OCL:
def: let hasTimerone : Boolean - value.pos("*-") > 0
or value.posC’ ") > C
inv "либо value,лиоо uncertainRange": not (value.ocllsDefir.ed and
uncertainRange.isNotNull)
inv "либо null,либо value": isNotNull implies (value.oclisDefined
or uncertainRange.isNotNull)
inv "типы неопределенности": uncertainRange.low.oclisDefined implies
uncertainRange.low.ocllsKindOf(PQ) and
uncertainRange.high.oclIsDefined implies
uncertainRange.high.ocllsKindOf(PQ) and
uncertainty.oclisDefined implies
uncertainty.ocllsKindOf(PQ)
inv "неопределенности - единицы": uncertainRange.low.oclIsDef:ned
implies uncertainRange.canonical.unit - "s" and
111