Вход | Регистрация
 

8.3. Можно ли получить дату из строки по формату

8.3. Можно ли получить дату из строки по формату
Я
   SeiOkami
 
18.01.19 - 09:28
Добрый день.

Представьте, что это академический вопрос. Чтобы не засыпали левыми вопросами "а зачем?".

Имеем дату. Её преобразовываем по формату в строку. Можно ли потом, имея строку и формат, получить обратно дату? Как-то платформенно
 
 
   ДенисЧ
 
1 - 18.01.19 - 09:31
Зависит от формата
   PuhUfa
 
2 - 18.01.19 - 09:32
(0) формат видимо не типовой?
   SeiOkami
 
3 - 18.01.19 - 09:32
формат - это функция Формат() в 1с
   SeiOkami
 
4 - 18.01.19 - 09:33
Т.е. 1С сама мне дату в строку преобразовала. А вот может ли обратно?)
   ZDenis
 
5 - 18.01.19 - 09:34
(4) Разбираешь строку на составляющие и преобразуешь.
   SiAl-chel
 
6 - 18.01.19 - 09:34
(0) Можно. Но писать долго.
СтрРазделить() - массив со строковыми значениями года, месяца и т.д,
Число() - конвертация значений года, месяца и т.д. в числа
Дата() - параметры - значения года, месяца и т.д, возвращает дату.
   SeiOkami
 
7 - 18.01.19 - 09:35
(5), это когда ты пишешь код под точную форматную строку. А речь о том, чтобы можно было её передать. Любую, которая понимает платформа 1С.
   ДенисЧ
 
8 - 18.01.19 - 09:36
(7) Формат(ТекущаяДата(), "ДФ=гггг")
Такую ты точно в исходную дату не преобразуешь никак.
Штатно 1с понимает только тот формат, который описан в СП в разделе "преобразование данных"
   SeiOkami
 
9 - 18.01.19 - 09:37
Ещё раз попробую объяснить.

В платформе есть функция 
   Строка = Формат(Значение, ФорматнаяСтрока);

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

Но есть ли метод у платформы, который потом может сделать обратное?
Или какая-нить хитрость, которой это можно сделать.
   НЕА123
 
10 - 18.01.19 - 09:37
(7)
ну передал "январь". какая дата?
 
 Рекламное место пустует
   SeiOkami
 
11 - 18.01.19 - 09:38
(8), речь именно о поддержимуемых форматных строках
   d4rkmesa
 
12 - 18.01.19 - 09:38
(10) Хе-хе, 01010001
   ДенисЧ
 
13 - 18.01.19 - 09:39
(11) А я что, написал неподдерживаемую?
   PuhUfa
 
14 - 18.01.19 - 09:40
(7) >>А речь о том, чтобы можно было её передать. Любую, которая понимает платформа 1С.

Ну и передавай те который понимает платформа
Глобальный контекст (Global context)
Дата (Date)
Вариант синтаксиса: По строке

Синтаксис:

Дата(<Значение>)
Параметры:

<Значение> (обязательный)

Тип: Строка.
Исходное значение даты.
Строка должна содержать дату в локальном формате даты или в каноническом виде YYYYMMDDHHMMSS.
Описание варианта метода:

При преобразовании строка должна содержать дату в каноническом формате "ГГГГММДДччммсс" (см. раздел "Примитивные типы данных").
Вариант синтаксиса: По составляющим

Синтаксис:

Дата(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>)
Параметры:

<Год> (обязательный)

Тип: Число.
Год даты. 
<Месяц> (обязательный)

Тип: Число. 
Месяц даты. 
<День> (обязательный)

Тип: Число. 
День даты. 
<Час> (необязательный)

Тип: Число. 
Час даты. 
<Минута> (необязательный)

Тип: Число. 
Минута даты. 
<Секунда> (необязательный)

Тип: Число. 
Секунда даты.
Описание варианта метода:

Допускаются следующие формы задания параметров:
Дата(Год, Месяц, День); 
Дата(Год, Месяц, День, Час, Минута, Секунда);
Возвращаемое значение:

Тип: Дата.

Описание:

Преобразует полученный параметр (параметры) в значение типа Дата.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

Дата("19840326062421");
Дата(1984,03,26,06,24,21);
   SeiOkami
 
15 - 18.01.19 - 09:41
(14), речь о форматной строке.
"ДФ=dd.MM.yyyy"
"ДФ=d.M.yy"
"ДФ=yyyy-MM-dd"

и т.д.
   Мыш
 
16 - 18.01.19 - 09:45
(0) Нет.
   PuhUfa
 
17 - 18.01.19 - 09:48
(15) ты уж определить... у тебя строка с датой в формате " которая понимает платформа 1С" или в любом другом формате...
То что ты приводишь:
"ДФ=dd.MM.yyyy"
"ДФ=d.M.yy"
"ДФ=yyyy-MM-dd"
Это просто готовые шаблоны а не канонический формат понимаемый 1С. В этих шаблонах ты можешь сам навертеть что хочешь, например: "dd^^MMMM^^yyyy"
   SeiOkami
 
18 - 18.01.19 - 09:51
(17), это форматная строка, которую понимает 1С. Это ею же сгенерированная форматная строка. Я только о таких и говорю
   SeiOkami
 
19 - 18.01.19 - 09:52
(17)
"В этих шаблонах ты можешь сам навертеть что хочешь, например: "dd^^MMMM^^yyyy""

И эту форматную строку тоже понимает 1С. И может преобразовать по ней данные
   НЕА123
 
20 - 18.01.19 - 09:52
функция антиформат(СтрокаДаты, Форматнаястрока)
// возвращает дату



осталось написать...
   ZDenis
 
21 - 18.01.19 - 09:53
(18) В (8) и в (10) тоже "сгенерированная форматная строка"

12-01-18
Это - 12 января 2018 года
или  18 января 2012 года ?
   ДенисЧ
 
22 - 18.01.19 - 09:53
(19) Во...
Формат(ТекущаяДата(), "ДЛФ=DD");

Тоже сформировалась автоматом из конструктора форматной строки
   SeiOkami
 
23 - 18.01.19 - 09:54
(21), завасит от форматной строки
   SeiOkami
 
24 - 18.01.19 - 09:54
(22), верно. и 1С может по ней превратить дату в строку
   ДенисЧ
 
25 - 18.01.19 - 09:58
(24) Попробуй сам
    стрдт = Формат(ТекущаяДата(), "ДЛФ=DD");
    сообщить(стрдт);
    Попытка
        Дт = Дата(стрДт);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    сообщить(дт);
   SeiOkami
 
26 - 18.01.19 - 10:04
(25), лол, понятно, что этот метод имеет другие входящие данные
   ДенисЧ
 
27 - 18.01.19 - 10:05
(26) Какой метод? Я тебе показал платформенное преобразование, о чём ты и спрашивал
   catena
 
28 - 18.01.19 - 10:13
Функция антиформат(СтрокаДаты,ФорматнаяСтрока)
дд = Дата(1900,1,1);
ддф = Формат(дд,ФорматнаяСтрока);
Пока СтрокаДаты<>ддф Цикл
    ОбработкаПрерыванияПользователя();
    дд=дд+60*60*24;
    ддф=Формат(дд,ФорматнаяСтрока);
КонецЦикла;    
Возврат(дд);
   SeiOkami
 
29 - 18.01.19 - 10:14
(27), я спрашивал о возможности обратного преобразования по форматной строке.

Строка = Формат(Дата, ФорматнаяСтрока);

Дата = АнтиФормат(Строка, ФорматнаяСтрока);
   ДенисЧ
 
30 - 18.01.19 - 10:14
(29) Ты синтакс-помощник открывал? Видел там такую функцию?
   SeiOkami
 
31 - 18.01.19 - 10:15
(28), а это крутая идея))
   SeiOkami
 
32 - 18.01.19 - 10:15
(28), интересно, как быстро цикл ляжет
   Вафель
 
33 - 18.01.19 - 10:29
можно через .net
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует