powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ошибка разделителя в дате
13 сообщений из 13, страница 1 из 1
Ошибка разделителя в дате
    #37195867
Jeni_Li
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Передаю в дату в виде строки "12/12/2011", вызов функции $zdh("12.12.2010") вызывает ошибку <ILLEGAL VALUE>, проходит только $zdh("12/12/2010"). Что можно сделать?
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37195917
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$ZDH
w $zdh("12.12.2010",5)
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37195929
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit , там ведь на 5-ку другой формат...
автор 5 Mmm D, YYYY (Jul 1, 1997) or any unambiguous American date format.
Ту 4-ка нужна.
автор 4 DD/MM/[YY]YY (01/07/97) - European format
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37196011
Jeni_Li
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужен именно 4-тый формат. Может где-то в настройках можно изменить разделитель?
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37196034
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, можно поправить локаль
Можно сделать по примеру из
http://localhost:57772/csp/docbook/DocBook.UI.Page.cls?KEY=ANLS_Classes#ANLS_Classes_sys_nls_format
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
USER>  Set fmt = ##class(%SYS.NLS.Format).%New()
USER>  Set fmt.DateSeparator = "."
USER>w $zdh("01/01/2010", 4 ) 
W $ZDH("01/01/2010", 4 )
^
<ILLEGAL VALUE>
USER>w $zdh("01.01.2010", 4 )
 61727 
Можно сделать
Код: plaintext
1.
w $zdh($tr("01.01.2010",".","/"), 4 )

А вообще мне казалось, что разделители пофиг, но дома пробую - нет, не пофиг.
А на работе есть программы, где точки я точки в дд.мм.гггг явно не преобразую в / и вроде работало, хм...
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37196047
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, зашел в
[Домашняя страница] > [Конфигурация] > [Настройки NLS] > [Определение Локали] > [Редактировать NLS]
там у меня разделитель даты - точка.
Но по умолчанию почему-то точка не работает.
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37196083
Jeni_Li
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю в Cache 5.0. На вызов функции fmt = ##CLASS(%SYS.NLS.Format).%New() пишет
<CLASS DOES NOT EXIST>.
Странность в том, что изначально ругался как раз-таки на разделитель "/", поэтому использовала ".", теперь же наоборот. Программа довольно большая, переписывать не хочется. А в чем дело никак не пойму.
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37196209
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa servit , там ведь на 5-ку другой формат...
автор 5 Mmm D, YYYY (Jul 1, 1997) or any unambiguous American date format.
Ту 4-ка нужна.
автор 4 DD/MM/[YY]YY (01/07/97) - European format
or any unambiguous American date format

Тем не менее в версии 2011.1 это работает для форматов 5,6,7,8,9,15 и не работает для формата 4 при настройках локали по умолчанию.
Если включить параметр "LocaleFormat" (см. ниже) формат 4 начинает работать.

Блок А.Н.Кстати, зашел в
[Домашняя страница] > [Конфигурация] > [Настройки NLS] > [Определение Локали] > [Редактировать NLS]
там у меня разделитель даты - точка.
Но по умолчанию почему-то точка не работает.
SET ^SYS("NLS","Config","LocaleFormat")=1
В версии 2011.1 этот параметр можно менять прямо из Портала.

Jeni_LiРаботаю в Cache 5.0. На вызов функции fmt = ##CLASS(%SYS.NLS.Format).%New() пишет
<CLASS DOES NOT EXIST>.
Странность в том, что изначально ругался как раз-таки на разделитель "/", поэтому использовала ".", теперь же наоборот. Программа довольно большая, переписывать не хочется. А в чем дело никак не пойму.
В версии 5.0 нет класса %SYS.NLS.Format .
Какую локаль по умолчанию Вы используете (Write ^%SYS("LOCALE","CURRENT"))?

PS: очень важно указывать в начале вопроса используемую версию Caché.
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37196262
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 4.1. была программа cnls.exe, запустите, что она вам даст сделать?
возможно, у вас поменялась локаль (в связи с перестановкой сервера или еще чем)
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37196447
Jeni_Li
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локаль по умолчанию rusw.
В программе cnls.exe пробовала создавать свою локаль, но что именно относится к формату даты?
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37197273
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeni_Li ,

Тестировал в версии 5.0.21, локаль rusw:

1)
Код: plaintext
1.
USER>w $zdh("12.12.2010",5)
62072

2)
Код: plaintext
1.
2.
3.
USER>set x=$$SetDCFormat^%NLS("DateFormat",4)
USER>set x=$$SetDCFormat^%NLS("DateSeparator",".")
USER>w $zdh("12.12.2010")
62072
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37197606
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitw $zdh("12.12.2010",5)
servit or any unambiguous American date format
Для Америки будет работать "MM.DD.YYYY", т.ч. "DD.MM.YYYY" никак не передать в 5м формате.
...
Рейтинг: 0 / 0
Ошибка разделителя в дате
    #37198627
Jeni_Li
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit, спасибо!!! set x=$$SetDCFormat^%NLS("DateSeparator",".") помогло.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Ошибка разделителя в дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]