![]() |
|
Как получить из строки дату | ☑ | ||
---|---|---|---|---|
0
TolikoSprosit
16.10.17
✎
13:54
|
Есть строка "09 августа 2017 г.". Как получить из нее дату?
Возможно это? |
|||
1
Ёпрст
гуру
16.10.17
✎
13:55
|
(0) Вам - нет
|
|||
2
Волшебник
модератор
16.10.17
✎
13:55
|
парсинг нужен
|
|||
3
Numerus Mikhail
16.10.17
✎
13:57
|
Возможно
|
|||
4
Fish
гуру
16.10.17
✎
13:57
|
(0) Возможно, а в чём проблема?
|
|||
5
mehfk
16.10.17
✎
13:58
|
(0) Если мояСтрока = "09 августа 2017 г." Тогда
мояДата = Дата(2017,08,09); КонецЕсли; |
|||
6
Dotoshin
16.10.17
✎
13:58
|
(4) Судя по вопросу проблема в том как это сделать вообще в принципе...
|
|||
7
Dotoshin
16.10.17
✎
14:00
|
(0) Поди-ка из экселя что-то загружаешь?
|
|||
8
Numerus Mikhail
16.10.17
✎
14:01
|
(5) Спасибо, то что нужно.
|
|||
9
TolikoSprosit
16.10.17
✎
14:43
|
(1) Что не так?
|
|||
10
TolikoSprosit
16.10.17
✎
14:43
|
(7) (6) Да
|
|||
11
TolikoSprosit
16.10.17
✎
14:44
|
(3) Как
|
|||
12
TolikoSprosit
16.10.17
✎
14:44
|
Вопрос в том, есть ли в 1с что-то вроде "Формат" наоборот?)
|
|||
13
TolikoSprosit
16.10.17
✎
14:45
|
ну или хотя бы месяц из строки в число не Если стр = "августа" тогда 8..
|
|||
14
Numerus Mikhail
16.10.17
✎
14:45
|
(11) Для начала определим, всегда ли дата в таком формате. Будет ли потом что-то типа "пятое 03 2017 года" или всегда по шаблону? Откуда загружаете? Может вам и не надо
|
|||
15
TolikoSprosit
16.10.17
✎
14:46
|
(14) Дата будет всегда в таком формате.
|
|||
16
Numerus Mikhail
16.10.17
✎
14:47
|
(13) Если СтрНайти(НРЕГ(Строка), "январ") Тогда 01
ИначеЕсли СтрНайти(НСТР(Строка), "феврал") Тогда 02 ИначеЕсли СтрНайти(НСТР(Строка), "март") Тогда 03 ну и так все 12 месяцев |
|||
17
Numerus Mikhail
16.10.17
✎
14:48
|
(15) Если все-таки полная дата нужна, то разбиваешь на массив подстрок. Число у тебя цифрой, месяц как в (16) получаешь, год тоже цифрой. Легчайшая задача.
|
|||
18
TolikoSprosit
16.10.17
✎
14:50
|
(16) (17) Не самое элегантное решение, хочется что-то от команды Нуралиева)
Но если ничего не найдется, так и будет. |
|||
19
Aleksey
16.10.17
✎
14:50
|
(16) проще список с месяцами строкой составить. И далее найти в списке и ты получишь нужный номер месяца
|
|||
20
aka AMIGO
16.10.17
✎
14:50
|
1. мояСтрока = "09 августа 2017 г.";
Если Найти(мояСтрока, "Янв") Тогда нужныймесяц=1; ... ИначеЕсли Найти(мояСтрока.. ... 2. СЗ= Новый "СписокЗначений" (или как там у вас в 8-ке) СЗ.ДобавитьЗначение("янв"); ... СЗ.добавитьЗначение("авг"); ... //и так 12 раз Дальше - искать в СЗ, вернуть номер позиции |
|||
21
aka AMIGO
16.10.17
✎
14:52
|
(18) Команда Нуралиева не предоставила решения твоей задачи.
|
|||
22
Aleksey
16.10.17
✎
15:00
|
НачДата = Дата(2017,01,01);
нужныймесяц=0; Пока не Найти(Формат(НачДата,"D ДФ=MMММ"),мояСтрока) Цикл нужныймесяц=нужныймесяц+1; НачДата = ДобавитьМесяц(НачДата); КонецЦикла; |
|||
23
Ёпрст
гуру
16.10.17
✎
15:02
|
(22) Найти число возвращает
|
|||
24
Ёпрст
гуру
16.10.17
✎
15:05
|
ну и
Формат(Дата(2017,01,01),"ДФ=MMММ") = Январь а не январЯ |
|||
25
TolikoSprosit
16.10.17
✎
15:11
|
(23) Но "найти" отрботает)
|
|||
26
Dotoshin
16.10.17
✎
15:14
|
(10) А не проще сначала в экселе преобразовать дату в удобоваримый формат, а потом загружать из него?
|
|||
27
TolikoSprosit
16.10.17
✎
15:17
|
(26) Там не дата, а строка) была бы дата, проблем бы не было.
|
|||
28
TolikoSprosit
16.10.17
✎
15:17
|
Функция ПолучитьНомерМесяца(Строка)
МассивМесяцев = Новый Массив; МассивМесяцев.Добавить("Январ"); МассивМесяцев.Добавить("Феврал"); МассивМесяцев.Добавить("Март"); МассивМесяцев.Добавить("Апрел"); МассивМесяцев.Добавить("Май");; МассивМесяцев.Добавить("Июн"); МассивМесяцев.Добавить("Июл"); МассивМесяцев.Добавить("Август"); МассивМесяцев.Добавить("Сентябр"); МассивМесяцев.Добавить("Октябр"); МассивМесяцев.Добавить("Ноябр"); МассивМесяцев.Добавить("Декабр"); Для ё=1 ПО МассивМесяцев.Количество() Цикл Если Найти(Строка,МассивМесяцев[ё-1]) Тогда Возврат ё; КонецЕсли; КонецЦикла; КонецФункции |
|||
29
Dotoshin
16.10.17
✎
15:19
|
(27) Ну и в чем проблема? Преобразовать в экселе строку в дату?
https://support.office.com/ru-ru/article/Преобразование-дат-из-текстового-формата-в-формат-даты-8df7663e-98e6-4295-96e4-32a67ec0a680 |
|||
30
Timon1405
16.10.17
✎
15:19
|
(28) на "09 маЯ 2017 г." не сработает функция. и все-таки лучше использовать объект соответствие
|
|||
31
TolikoSprosit
16.10.17
✎
15:22
|
(30) "маЯ" не будет, если будет напишу Нрег.
Не понимаю зачем Соответствие? |
|||
32
TolikoSprosit
16.10.17
✎
15:23
|
(29) Вы мне в пользовательском режиме что-то делать предлагаете?)
|
|||
33
Numerus Mikhail
16.10.17
✎
15:27
|
(31) имеется в виду что "май" и "мая" это разные слова.
|
|||
34
TolikoSprosit
16.10.17
✎
15:32
|
(33) Блин) Не подумал)
|
|||
35
TolikoSprosit
16.10.17
✎
15:35
|
Короче вроде это:
Функция ПолучитьДатуИзСтроки(Строка) МСтрока = СтрЗаменить(Строка," ",Символы.ПС); Возврат Дата(СтрПолучитьСтроку(МСтрока,3) +ПолучитьНомерМесяца(СтрПолучитьСтроку(МСтрока,2)) +СтрПолучитьСтроку(МСтрока,1)); КонецФункции // () Функция ПолучитьНомерМесяца(Строка) МассивМесяцев = Новый Массив; МассивМесяцев.Добавить("Январ"); МассивМесяцев.Добавить("Феврал"); МассивМесяцев.Добавить("Март"); МассивМесяцев.Добавить("Апрел"); МассивМесяцев.Добавить("Ма");; МассивМесяцев.Добавить("Июн"); МассивМесяцев.Добавить("Июл"); МассивМесяцев.Добавить("Август"); МассивМесяцев.Добавить("Сентябр"); МассивМесяцев.Добавить("Октябр"); МассивМесяцев.Добавить("Ноябр"); МассивМесяцев.Добавить("Декабр"); Для ё=1 ПО МассивМесяцев.Количество() Цикл Если Найти(Строка,МассивМесяцев[ё-1]) Тогда Возврат Формат(ё,"ЧЦ=2; ЧВН="); КонецЕсли; КонецЦикла; КонецФункции |
|||
36
Dotoshin
16.10.17
✎
15:36
|
(32) Я предлагаю привести исходные данные к нужному формату, а как это сделать решайте сами.
|
|||
37
lodger
16.10.17
✎
15:46
|
никто не пробовал такую штуку шарашить?
https://www.techonthenet.com/excel/formulas/cdate.php |
|||
38
TolikoSprosit
16.10.17
✎
15:52
|
(37) Макросы по COMу, уж лучше костылями)
|
|||
39
Ёпрст
гуру
16.10.17
✎
15:52
|
(36) ну-ну. Теперь МАй = МАрт
|
|||
40
TolikoSprosit
16.10.17
✎
15:55
|
(39) Нет, Март первый отработает)
|
|||
41
Timon1405
16.10.17
✎
15:55
|
ВходСтрокаМесяца="Августа";
СоответствиеМесяцев = Новый Соответствие; СоответствиеМесяцев.Вставить("января","01"); СоответствиеМесяцев.Вставить("февраля","02"); СоответствиеМесяцев.Вставить("марта","03"); СоответствиеМесяцев.Вставить("апреля","04"); СоответствиеМесяцев.Вставить("мая","05"); СоответствиеМесяцев.Вставить("июня","06"); СоответствиеМесяцев.Вставить("июля","07"); СоответствиеМесяцев.Вставить("августа","08"); СоответствиеМесяцев.Вставить("сентября","09"); СоответствиеМесяцев.Вставить("октября","10"); СоответствиеМесяцев.Вставить("ноября","11"); СоответствиеМесяцев.Вставить("декабря","12"); НомерМесяца= СоответствиеМесяцев.Получить(нрег(ВходСтрокаМесяца)); |
|||
42
TolikoSprosit
16.10.17
✎
16:06
|
(41) Быстрее, да.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |