Страница 1 из 1

cJSON: Замена формата дат (и не только)

Добавлено: 29 Сентябрь 2024, 8:51
Игорь Столяров
Добрый день !

Нужно переформатировать даты в структуре - и возникает непреодолимая проблема.
Простой пример:

Код: Выделить всё

MyTest  Routine
  Data
Root   &cJson
MyDate Group
Task     CString('Задание')
InDate   CString('29.09.2024')  ! Но мне нужна дата в формате "YYYY.MM.DD"
       end
  Code
  Root &= json::CreateObject(MyDate,,'[{{"Name":"InDate","Deformat":"@D06.","Format":"@D010."}]')
  
  If Not Root &= Null then Message(Root.ToString()); Root.Delete().
Результат: {"task":"Задание","indate":"1801.01.26"} :(

Догадываюсь, что нужно идти в FindCB() и т.д.
Но вроде бы простое действие и здесь нет каких-то технологических проблем Clarion ... можно ли проще ?
Ведь просто требуется правильная последовательнось применения RULES к значению тега. Спасибо ! :)

cJSON: Замена формата дат (и не только)

Добавлено: 29 Сентябрь 2024, 17:13
Дед Пахом
Либо Format, либо Deformat. Format старше.

cJSON: Замена формата дат (и не только)

Добавлено: 29 Сентябрь 2024, 17:43
Дед Пахом
Кстати, какой смысл даты хранить в cstring, а не в long?

cJSON: Замена формата дат (и не только)

Добавлено: 29 Сентябрь 2024, 18:23
Игорь Столяров
Дед Пахом писал(а): 29 Сентябрь 2024, 17:43 Кстати, какой смысл даты хранить в cstring, а не в long
Я вообще человек подневольный ...
Один сервис возвращает дату в @d06, другой желает получать её же в @d010 ...
Начать сейчас заменять форматы хранения дат - это переделывать кучу старых методов.
Конечно сделал уже конвертацию списка через костыль, думал хоть в этом вопросе можно без него. Ан нет ! :(
Дед Пахом писал(а): 29 Сентябрь 2024, 17:13 Format старше.
Назовите пожалуйста хоть одну комбинацию, где нужно значение форматировать, а потом деформатировать ?
Этим даже девушку нельзя удивить. ;)

А замена формата хранения при загрузке / выгрузке - сплошь и рядом. И не только даты, но и суммы.
Потому что, как верно Вы заметили, приход SV с хранением даты в LONG никому не интересен на сторонних сервисах.

cJSON: Замена формата дат (и не только)

Добавлено: 29 Сентябрь 2024, 18:46
Дед Пахом
Игорь Столяров писал(а): 29 Сентябрь 2024, 18:23 Назовите пожалуйста хоть одну комбинацию, где нужно значение форматировать, а потом деформатировать ?
"Format старше" означает, что Deformat игнорируется.

cJSON: Замена формата дат (и не только)

Добавлено: 29 Сентябрь 2024, 19:12
Игорь Столяров
Дед Пахом писал(а): 29 Сентябрь 2024, 18:46 что Deformat игнорируется
И напрасно ! Это ограничивает функционал без какой-либо объективной причины ... :(
При этом, например, опции IsBool / IgnoreFalse работают в комбинации без проблем.
Просто потому, что при их реализации - Вы видели их совместное использование. ;)

cJSON: Замена формата дат (и не только)

Добавлено: 29 Сентябрь 2024, 19:51
Дед Пахом
Согласен. Если присутствуют оба правила, то выполнится format(deformat()).