|
Переворачивание строки | ☑ | ||
---|---|---|---|---|
0
Oz11
19.08.11
✎
17:11
|
Ситуация такова. Есть строка вида "15.05.09" необходимо преобразовать ее в дату, тоесть проблема сводиться к переворачиванию строки и добавлению в ее начало строки "20". Подскажите, как перевернуть строку.
|
|||
1
lubja
19.08.11
✎
17:13
|
пройтись по строке: до первой точки - число, до второй минус первая - месяц, а остальное - год
|
|||
2
unregistered
19.08.11
✎
17:16
|
Год = 2000 + Число(Прав(Строчка, 2));
Месяц = Число(Сред(Строчка, 3, 2)); День = Число(Лев(Строчка, 2)); МояДата = Дата(Год, Месяц, День); |
|||
3
zbv
19.08.11
✎
17:16
|
у функции дата есть еще такой синтаксис
Дата(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>) чтобы выделить числа поотдельности, тебе помогут: Найти, Лев, Сред. |
|||
4
andrewks
19.08.11
✎
17:17
|
Дата(Лев(5,С)+"20"+Сред(7,С))
|
|||
5
andrewks
19.08.11
✎
17:18
|
ну, т.е
Дата(Лев(С,5)+"20"+Сред(С,7)) :) |
|||
6
unregistered
19.08.11
✎
17:21
|
(4) (5) Тогда уж:
Дата("20"+Прав(С,2)+Сред(С,4,2)+Лев(С,2)) |
|||
7
andrewks
19.08.11
✎
17:22
|
(6) не-не. просто пятница :)
так надо: Дата(Лев(С,5)+".20"+Сред(С,7)) |
|||
8
Oz11
19.08.11
✎
17:22
|
Блин, не поверите, только закончил писать эту тему, как в голову пришло решение, точно такое же как в первом ответе. всем спасибо.
|
|||
9
vmv
19.08.11
✎
17:35
|
в типовых есть функция
м = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок("15.05.09", ".") м[0] = ОбщегоНазначения.ПреобразоватьВЧисло(м[0]); м[1] = ОбщегоНазначения.ПреобразоватьВЧисло(м[1]); м[2] = ОбщегоНазначения.ПреобразоватьВЧисло(м[2]); ПолученнаяДата = Дата((2000+м[2]), м[1], м[0]); понятно и без геммороя, проверки еще добавить на корректность данных строки. На производительность плевать при разовых операциях. |
|||
10
vmv
19.08.11
✎
17:38
|
тьотки любят писать 1.09.09 и все лев(), сред() летят в трубу
|
|||
11
Sereja
19.08.11
✎
17:38
|
= Формат(Дата("15.05.09"),"ФорматнаяСтрокаКонструктора") ?
Не ? |
|||
12
Sereja
19.08.11
✎
17:39
|
(10) зато прав() прокатывает
|
|||
13
vmv
19.08.11
✎
17:41
|
12. ты не видел что могут наваять тьотки в экселе, где датой забьют, где строкой в одной колонке, а вариант 1.9.09 тожа прокатывает через Прав()?
на фига парить репу над логикой тьоток если можно эту их "логику" вздуть) |
|||
14
zbv
19.08.11
✎
17:59
|
(13) ну тогда еще надо учесть, что вместо "." частенько используют ","
|
|||
15
vmv
19.08.11
✎
18:34
|
(14)
МойМодуль.РазложитьСтрокуВМассивПодстрокМоя("15.05.09", ".,-/"); Дописать процедуру с проверкой на вхождение разделителя в строку разделетелей - одна строка кода, не скажу какая. Я считаю, что мое решение наиболее логично и "отказоустойчиво") |
|||
16
kuromanlich
19.08.11
✎
18:59
|
(0) однако...
|
|||
17
Kaushly
19.08.11
✎
20:44
|
ДобавитьМесяц(Дата("15.05.09" + " 00:00:00"), 2000 * 12)
|
|||
18
IamAlexy
19.08.11
✎
21:35
|
(13) ну так если ты подстилка то сам прежде чем загружать исправишь все в екселе.. а затем же будешь грузить.. ибо в дате 5.7.9 ты хрен поймешь что там твои тьйотки имели ввиду...
может они на западный манер месяц положили в первое число.. нормальный специалист утвердит раз и на всегда формат загружаемых данных и не будет этой х.ней маятся.. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |