| 
    
        
     
     | 
    
  | 
Как из строки "Март 2012" получить Дату? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        ProgaN    
     05.04.12 
            ✎
    07:00 
 | 
         
        Как строку "Март 2012" привести к типу Дата с минимальным количеством строк кода (наиболее оптимально)?     
         | 
|||
| 
    1
    
        Рэйв    
     05.04.12 
            ✎
    07:06 
 | 
         
        Дат=Дата(Число(Прав("Март 2012",4)),1,1,0,0,0);     
         | 
|||
| 
    2
    
        Рэйв    
     05.04.12 
            ✎
    07:07 
 | 
         
        вернее
  
        Дат=Дата(Число(Прав("Март 2012",4)),3,1,0,0,0)  | 
|||
| 
    3
    
        Cube    
     05.04.12 
            ✎
    07:08 
 | 
         
        (0) 1). Отрезаешь последние 4 символа.
  
        2). Удаляешь пробелы в начале и конце. 3). Сравниваешь полученную строку со строками "Январь", "Февраль" и т.д., получаешь номер месяца. 4). А потом СП: Синтаксис: Дата(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>) Параметры: <Год> (обязательный) Тип: Число. Год даты. <Месяц> (обязательный) Тип: Число. Месяц даты. <День> (обязательный) Тип: Число. День даты. <Час> (необязательный) Тип: Число. Час даты. <Минута> (необязательный) Тип: Число. Минута даты. <Секунда> (необязательный) Тип: Число. Секунда даты.  | 
|||
| 
    4
    
        Chai Nic    
     05.04.12 
            ✎
    07:09 
 | 
         
        ---
  
        Если Строка="Март 2012" тогда ЗначениеДата=Дата(2012,3,1) КонецЕсли --- Задача выполнена :)  | 
|||
| 
    5
    
        Cube    
     05.04.12 
            ✎
    07:09 
 | 
         
        (4) Зачет!))     
         | 
|||
| 
    6
    
        ptrtss    
     05.04.12 
            ✎
    07:13 
 | 
         
        Во, я тоже написал вариант
  
        Месяцы = Новый Соответствие; Для н = 1 по 12 Цикл Месяцы[Формат(Дата(1, н, 1), "ДФ=ММММ")] = н; КонецЦикла; Дата(Сред(Строка, Найти(Строка, " ") + 1), Месяцы[Лев(Строка, Найти(Строка, " ") - 1)], 1);  | 
|||
| 
    7
    
        МастерВопросов    
     05.04.12 
            ✎
    07:13 
 | 
         
        в типовых же есть уже написанная фунция ПолучитьДатуИзСтроки() как то так...     
         | 
|||
| 
    8
    
        ProgaN    
     05.04.12 
            ✎
    07:16 
 | 
         
        Не воспринимайте условия задачи буквально. )))
  
        Конечно, "март 2012" - это пример. То есть в строке месяц и год строкой через пробел.  | 
|||
| 
    9
    
        ProgaN    
     05.04.12 
            ✎
    07:18 
 | 
         
        (7) Не подходит
  
        // Возвращает дату из строки в формате ЧЧ.ММ.ГГГГ // Функция ПолучитьДатуИзСтроки(Строка) Экспорт Возврат Дата(Сред(Строка, 7, 4)+Сред(Строка, 4, 2)+Лев(Строка, 2)); КонецФункции  | 
|||
| 
    10
    
        МастерВопросов    
     05.04.12 
            ✎
    07:19 
 | 
         
        (7)
  
        // Предназначена для реализации "произвольного" ввода даты-месяца // подбирает по переданному тексту строку-представление даты или список таких строк // в переданный параметр ДатаПоТексту возвращает подобранную по тексту дату Функция ДатаКакМесяцПодобратьДатуПоТексту(Текст, ДатаПоТексту = НеОпределено) ЭКспорт СписокВозврата = Новый СписокЗначений; ТекущийГод = Год(ТекущаяДата()); Если ПустаяСтрока(Текст) Тогда Возврат СписокВозврата; КонецЕсли; Если Найти(Текст, ".") <> 0 Тогда Подстроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Текст, "."); ИначеЕсли Найти(Текст, ",") <> 0 Тогда Подстроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Текст, ","); ИначеЕсли Найти(Текст, "-") <> 0 Тогда Подстроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Текст, "-"); ИначеЕсли Найти(Текст, "/") <> 0 Тогда Подстроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Текст, "/"); ИначеЕсли Найти(Текст, "\") <> 0 Тогда Подстроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Текст, "\"); Иначе Подстроки = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Текст, " "); КонецЕсли; Если Подстроки.Количество() = 1 Тогда // единственное слово - пытаемся получить месяц Если ОбщегоНазначения.ТолькоЦифрыВСтроке(Текст) Тогда МесяцЧислом = Число(Текст); Если МесяцЧислом >= 1 и МесяцЧислом <=12 Тогда ДатаПоТексту = Дата(ТекущийГод, МесяцЧислом, 1); Если СтрДлина(Текст) = 1 Тогда СписокВозврата.Добавить(Формат(ДатаПоТексту, "ДФ='М/гг'")); Иначе СписокВозврата.Добавить(Формат(ДатаПоТексту, "ДФ='ММ/гг'")); КонецЕсли; Иначе Возврат СписокВозврата; КонецЕсли; Иначе СписокМесяцев = СписокМесяцевПоСтроке(Текст); Для Каждого Месяц Из СписокМесяцев Цикл ДатаПоТексту = Дата(ТекущийГод, Месяц, 1); СписокВозврата.Добавить(Формат(ДатаПоТексту, "ДФ='ММММ гг'")); КонецЦикла; КонецЕсли; ИначеЕсли Подстроки.Количество() = 2 Тогда // два слова - первое считаем месяцем, второе - годом Если ОбщегоНазначения.ТолькоЦифрыВСтроке(Подстроки[1]) Тогда Если ПустаяСтрока(Подстроки[1]) Тогда ГодЧислом = 0; Подстроки[1] = "0"; ТекстВозврата = Текст + "0"; Иначе ГодЧислом = Число(Подстроки[1]); ТекстВозврата = ""; КонецЕсли; Если ГодЧислом > 3000 Тогда Возврат СписокВозврата; КонецЕсли; Если СтрДлина(Подстроки[1]) <= 1 Тогда ГодЧислом = Число(Лев(Формат(ТекущийГод, "ЧГ="), 3) + Подстроки[1]); СтрокаФорматированияГода = "г"; ИначеЕсли СтрДлина(Подстроки[1]) = 2 Тогда ГодЧислом = Число(Лев(Формат(ТекущийГод, "ЧГ="), 2) + Подстроки[1]); СтрокаФорматированияГода = "гг"; ИначеЕсли СтрДлина(Подстроки[1]) = 3 Тогда ГодЧислом = Число(Лев(Формат(ТекущийГод, "ЧГ="), 1) + Подстроки[1]); СтрокаФорматированияГода = "гггг"; КонецЕсли; Иначе // второе слово может быть только годом Возврат СписокВозврата; КонецЕсли; Если ОбщегоНазначения.ТолькоЦифрыВСтроке(Подстроки[0]) Тогда МесяцЧислом = Число(Подстроки[0]); Если МесяцЧислом >= 1 и МесяцЧислом <= 12 Тогда // если "правильный" месяц и год ДатаПоТексту = Дата(ГодЧислом, МесяцЧислом, 1); СписокВозврата.Добавить(ТекстВозврата); Иначе Возврат СписокВозврата; КонецЕсли; Иначе СписокМесяцев = СписокМесяцевПоСтроке(Подстроки[0]); Если СписокМесяцев.Количество() = 1 Тогда ДатаПоТексту = Дата(ГодЧислом, СписокМесяцев[0], 1); СписокВозврата.Добавить(""); Иначе Для Каждого Месяц Из СписокМесяцев Цикл ДатаПоТексту = Дата(ГодЧислом, Месяц, 1); СписокВозврата.Добавить(Формат(Дата(ГодЧислом, Месяц, 1), "ДФ='ММММ гг'")); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; Возврат СписокВозврата; КонецФункции  | 
|||
| 
    11
    
        ProgaN    
     05.04.12 
            ✎
    07:40 
 | 
         
        все спасибо!     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |