Распечатать страницу

Команды для данных типа Date и DateTime в VFP

« Назад

Команда

SET CENTURY ON | OFF | TO [nCentury [ROLLOVER nYear]]

если установлена в ON обеспечивает воспроизведение года в виде 4-х цифр; при установке команды в OFF (задана по умолчанию) год отображается в виде 2-х цифр.

При использовании даты, в которой год задается в виде 2-х цифр, параметр nCentury задает век, к которому относится год; принимает значения от 1 до 99. По умолчанию nCentury = 19.

Параметр nYear опции ROLLOVER принимает значения от 0 до 99 и задает год, начиная с которого указанный в виде 2-х цифр год даты принадлежит к веку nCentury; год даты, меньший nYear, будет относиться к веку, следующему за веком nCentury. По умолчанию nYear = 54.

Выполнение SET CENTURY TO без аргументов восстанавливают значения по умолчанию для nCentury и nYear.

Установки SET CENTURY TO сохраняются с текущей сессией данных. Новая сессия данных берет заданные по умолчанию значения nCentury и nYear.

Пример. Возьмем таблицу Test.dbf, имеющую в том числе поле Date типа Date. Зададим в командном окне установки

set century off

set century to

После их выполнения год даты в поле Date таблицы отображается в виде 2-х цифр. Исключение составляет выбранное поле, в котором год представлен полностью (рис. 3.5, а).

66.1.-Отображение-дат

Рис. 3.5. Отображение дат:
а, б – используются заданные по умолчанию значения nCentury и nYear;
в, г, д – для новых записей nCentury = 15, nYear = 55;
е - SET CENTURY установлен в ON

Поскольку использованы заданные по умолчанию значения команды SET CENTURY, то вводимые для указания года его две последние цифры – 04 относят год к 21 веку. Если, однако, в новой записи таблицы ввести на месте года 54, то этот год будет позиционирован в 20 веке (рис. 3.5, б).

Изменим установки SET CENTURY:

set century to 15 rollover 55

добавим 2 записи и введем на месте года в первой 04, а во второй – 54. При таких установках и первая и вторая даты будут позиционированы в 17-м веке (рис. 3.5, в и г); ввод на месте года цифр 55 отнесет дату к 16-у веку (рис. 3.5, д).

После выполнения

set century on

все даты отобразятся с полным представлением года (рис  3.5, е).

Восстановим заданные по умолчанию значения nCentury и nYear.

set century to

Замечание. Работа с 2-значным годом несколько снижает время ввода данных, однако при этом приходится следить за значениями nCentury и nYear. Более предпочтительно 4-значное представление года, поскольку оно позволяет визуально контролировать год при вводе дат и дат и времени.

Команда

SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN
                   | ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD
                   | SHORT | LONG

задает формат отображения значений типа Date и DateTime. Возможные виды представлений даты и даты и времени приведены в табл. 3.35.

Таблица 3.35

Установки SET DATE и соответствующие им форматы
представления дат и дат и времени 

Установки SET DATE

Формат представления даты

AMERICAN (по умолчанию)

mm/dd/yy

ANSI

yy.mm.dd

BRITISH/FRENCH

dd/mm/yy

GERMAN

dd.mm.yy

ITALIAN

dd-mm-yy

JAPAN

yy/mm/dd

TAIWAN

yy/mm/dd

USA

mm–dd–yy

MDY

mm/dd/yy

DMY

dd/mm/yy

YMD

yy/mm/dd

SHORT, LONG

Соответственно короткий и длинный форматы представления даты, определяемые на панели управления Windows "Язык и региональные стандарты" (рис. 3.6)

66.2.-Диалоговое-окно-панели-управления-Windows-Язык-и-региональные-стан-дарты

Рис. 3.6. Диалоговое окно панели управления Windows "Язык и региональные стандарты"

Замечание. Если SET DATE установлен в SHORT или LONG нельзя указывать даты меньшие {^1601–01–01}. При нарушении этого правила возникнет ошибка исполнения. Кроме того, при таких установках команды SET CENTURY, SET MARK, SET HOURS и SET SECONDS игнорируются.

Значение SET DATE сохраняется с текущей сессией данных.

Пример:

store {^2005–12–31} to endOfYear

set century off

set date to german

? endOfYear                        && Напечатает: 31.12.05

set date to short

? endOfYear                        && Напечатает: 31.12.2005

set date to Long

? endOfYear                        && Напечатает: 31 декабря 2005 г.

Команда

SET FDOW TO [nFirstDayOfWeek]

устанавливает первый день недели. Возможные значения nFirstDayOfWeek приведены в табл. 3.36 при рассмотрении функции DOW( ).

Команда

SET FWEEK TO [nFirstWeek]

задает требования к первой неделе года. Необязательный параметр nFirstWeek может быть установлен равным 1, 2 или 3. Описание параметра дано в табл. 3.36 при рассмотрении функции WEEK( ). Если параметр nFirstWeek опущен, то восстанавливается заданное по умолчанию значение (оно равно 1).

Первая неделя может быть также определена на вкладке Regional диалогового окна Options.

Команда

SET HOURS TO [12 | 24]

задает 12- или 24-часовой формат представления времени. По умолчанию SET HOURS установлен в 12. Вызов

SET HOURS TO

вернет формат представления времени к заданному по умолчанию значению.

Замечание. Функция TIME( ) всегда возвращает время 24-часовом формате и на нее установка SET HOURS не действуют. Значение, возвращаемое функцией DATETIME( ) зависит от установки SET HOURS.

Значение SET HOURS сохраняется с текущей сессией данных

Команда

SET MARK TO [cDelimiter]

задает символ (разделитель) cDelimiter, употребляемый при отображении даты. Вызов SET MARK TO без cDelimiter вернет заданный по умолчанию разделитель.

Разделитель, как и установки других команд, употребляемых с датой и датой и временем, задается на вкладке Regional диалогового окна Options.

Значение SET MARK сохраняется с текущей сессией данных.

Команда

SET SECONDS ON | OFF

если выполнена с опцией ON, указывает, что при выводе значения типа DateTime секунды будут отображаться. Выполнение команды с опцией OFF удаляет секунды из визуального представления даты и времени. По умолчанию действует опция ON.

Значение SET SECONDS сохраняется с текущей сессией данных

Команда

SET STRICTDATE TO [0 | 1 | 2]

говорит системе, нужно ли генерировать ошибку при обнаружении неверной даты (даты и времени) или нет.

Параметры:

0 – проверка значений типа Date и DateTime отключена. Неверные значения дат и дат и времени оцениваются как пустые даты. Значении 0 используется по умолчанию во время вычислений и для ODBC-драйверов.

1 – выполняется проверка значений констант типа Date и DateTime. При обнаружении отклонений от формата задания константы типа Date или DateTime генерируется ошибка либо во время компиляции (при наличии дат в define-константах), либо во время исполнения, либо при интерактивном вводе данных. Значение 1 задается по умолчанию для интерактивных сессий.

2 – оказывает то же влияние, как и задание 1, но дополнительно генерирует ошибку 2033, если функция CTOD( ) или CTOT( ) возвращает неверную дату.

Если есть опасение, что функция CTOD( ) или CTOT( ) может вернуть неверную дату, лучше употребить функцию DATE( ) или DATETIME( ) с необязательными параметрами для формирования нужного результата.

Замечание. При работе со свойством StrictDateEntry, употребляемым с элементом управления TextBox, установки SET STRICTDATE не действуют.