|
8.3. Можно ли получить дату из строки по формату | ☑ | ||
---|---|---|---|---|
0
SeiOkami
18.01.19
✎
09:28
|
Добрый день.
Представьте, что это академический вопрос. Чтобы не засыпали левыми вопросами "а зачем?". Имеем дату. Её преобразовываем по формату в строку. Можно ли потом, имея строку и формат, получить обратно дату? Как-то платформенно |
|||
1
ДенисЧ
18.01.19
✎
09:31
|
Зависит от формата
|
|||
2
PuhUfa
18.01.19
✎
09:32
|
(0) формат видимо не типовой?
|
|||
3
SeiOkami
18.01.19
✎
09:32
|
формат - это функция Формат() в 1с
|
|||
4
SeiOkami
18.01.19
✎
09:33
|
Т.е. 1С сама мне дату в строку преобразовала. А вот может ли обратно?)
|
|||
5
ZDenis
18.01.19
✎
09:34
|
(4) Разбираешь строку на составляющие и преобразуешь.
|
|||
6
SiAl-chel
18.01.19
✎
09:34
|
(0) Можно. Но писать долго.
СтрРазделить() - массив со строковыми значениями года, месяца и т.д, Число() - конвертация значений года, месяца и т.д. в числа Дата() - параметры - значения года, месяца и т.д, возвращает дату. |
|||
7
SeiOkami
18.01.19
✎
09:35
|
(5), это когда ты пишешь код под точную форматную строку. А речь о том, чтобы можно было её передать. Любую, которая понимает платформа 1С.
|
|||
8
ДенисЧ
18.01.19
✎
09:36
|
(7) Формат(ТекущаяДата(), "ДФ=гггг")
Такую ты точно в исходную дату не преобразуешь никак. Штатно 1с понимает только тот формат, который описан в СП в разделе "преобразование данных" |
|||
9
SeiOkami
18.01.19
✎
09:37
|
Ещё раз попробую объяснить.
В платформе есть функция Строка = Формат(Значение, ФорматнаяСтрока); Она может дату превратить в строку по форматной строке (то бишь формуле). Но есть ли метод у платформы, который потом может сделать обратное? Или какая-нить хитрость, которой это можно сделать. |
|||
10
НЕА123
18.01.19
✎
09:37
|
(7)
ну передал "январь". какая дата? |
|||
11
SeiOkami
18.01.19
✎
09:38
|
(8), речь именно о поддержимуемых форматных строках
|
|||
12
d4rkmesa
18.01.19
✎
09:38
|
(10) Хе-хе, 01010001
|
|||
13
ДенисЧ
18.01.19
✎
09:39
|
(11) А я что, написал неподдерживаемую?
|
|||
14
PuhUfa
18.01.19
✎
09:40
|
(7) >>А речь о том, чтобы можно было её передать. Любую, которая понимает платформа 1С.
Ну и передавай те который понимает платформа Глобальный контекст (Global context) Дата (Date) Вариант синтаксиса: По строке Синтаксис: Дата(<Значение>) Параметры: <Значение> (обязательный) Тип: Строка. Исходное значение даты. Строка должна содержать дату в локальном формате даты или в каноническом виде YYYYMMDDHHMMSS. Описание варианта метода: При преобразовании строка должна содержать дату в каноническом формате "ГГГГММДДччммсс" (см. раздел "Примитивные типы данных"). Вариант синтаксиса: По составляющим Синтаксис: Дата(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>) Параметры: <Год> (обязательный) Тип: Число. Год даты. <Месяц> (обязательный) Тип: Число. Месяц даты. <День> (обязательный) Тип: Число. День даты. <Час> (необязательный) Тип: Число. Час даты. <Минута> (необязательный) Тип: Число. Минута даты. <Секунда> (необязательный) Тип: Число. Секунда даты. Описание варианта метода: Допускаются следующие формы задания параметров: Дата(Год, Месяц, День); Дата(Год, Месяц, День, Час, Минута, Секунда); Возвращаемое значение: Тип: Дата. Описание: Преобразует полученный параметр (параметры) в значение типа Дата. Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Пример: Дата("19840326062421"); Дата(1984,03,26,06,24,21); |
|||
15
SeiOkami
18.01.19
✎
09:41
|
(14), речь о форматной строке.
"ДФ=dd.MM.yyyy" "ДФ=d.M.yy" "ДФ=yyyy-MM-dd" и т.д. |
|||
16
Мыш
18.01.19
✎
09:45
|
(0) Нет.
|
|||
17
PuhUfa
18.01.19
✎
09:48
|
(15) ты уж определить... у тебя строка с датой в формате " которая понимает платформа 1С" или в любом другом формате...
То что ты приводишь: "ДФ=dd.MM.yyyy" "ДФ=d.M.yy" "ДФ=yyyy-MM-dd" Это просто готовые шаблоны а не канонический формат понимаемый 1С. В этих шаблонах ты можешь сам навертеть что хочешь, например: "dd^^MMMM^^yyyy" |
|||
18
SeiOkami
18.01.19
✎
09:51
|
(17), это форматная строка, которую понимает 1С. Это ею же сгенерированная форматная строка. Я только о таких и говорю
|
|||
19
SeiOkami
18.01.19
✎
09:52
|
(17)
"В этих шаблонах ты можешь сам навертеть что хочешь, например: "dd^^MMMM^^yyyy"" И эту форматную строку тоже понимает 1С. И может преобразовать по ней данные |
|||
20
НЕА123
18.01.19
✎
09:52
|
функция антиформат(СтрокаДаты, Форматнаястрока)
// возвращает дату осталось написать... |
|||
21
ZDenis
18.01.19
✎
09:53
|
(18) В (8) и в (10) тоже "сгенерированная форматная строка"
12-01-18 Это - 12 января 2018 года или 18 января 2012 года ? |
|||
22
ДенисЧ
18.01.19
✎
09:53
|
(19) Во...
Формат(ТекущаяДата(), "ДЛФ=DD"); Тоже сформировалась автоматом из конструктора форматной строки |
|||
23
SeiOkami
18.01.19
✎
09:54
|
(21), завасит от форматной строки
|
|||
24
SeiOkami
18.01.19
✎
09:54
|
(22), верно. и 1С может по ней превратить дату в строку
|
|||
25
ДенисЧ
18.01.19
✎
09:58
|
(24) Попробуй сам
стрдт = Формат(ТекущаяДата(), "ДЛФ=DD"); сообщить(стрдт); Попытка Дт = Дата(стрДт); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; сообщить(дт); |
|||
26
SeiOkami
18.01.19
✎
10:04
|
(25), лол, понятно, что этот метод имеет другие входящие данные
|
|||
27
ДенисЧ
18.01.19
✎
10:05
|
(26) Какой метод? Я тебе показал платформенное преобразование, о чём ты и спрашивал
|
|||
28
catena
18.01.19
✎
10:13
|
Функция антиформат(СтрокаДаты,ФорматнаяСтрока)
дд = Дата(1900,1,1); ддф = Формат(дд,ФорматнаяСтрока); Пока СтрокаДаты<>ддф Цикл ОбработкаПрерыванияПользователя(); дд=дд+60*60*24; ддф=Формат(дд,ФорматнаяСтрока); КонецЦикла; Возврат(дд); |
|||
29
SeiOkami
18.01.19
✎
10:14
|
(27), я спрашивал о возможности обратного преобразования по форматной строке.
Строка = Формат(Дата, ФорматнаяСтрока); Дата = АнтиФормат(Строка, ФорматнаяСтрока); |
|||
30
ДенисЧ
18.01.19
✎
10:14
|
(29) Ты синтакс-помощник открывал? Видел там такую функцию?
|
|||
31
SeiOkami
18.01.19
✎
10:15
|
(28), а это крутая идея))
|
|||
32
SeiOkami
18.01.19
✎
10:15
|
(28), интересно, как быстро цикл ляжет
|
|||
33
Вафель
18.01.19
✎
10:29
|
можно через .net
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |