Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
1

Преобразование даты

25.07.2018, 13:47. Просмотров 1481. Ответов 12
Метки нет (Все метки)

Здравствуйте. Переношу данные в 1с8 и в файлах даты хранятся в таком виде: "06.03.97". Я вот не понимаю, этот язык создан чтобы портить жизнь? Почему я должен, в первую очередь, поменять число и год местами, потом к году добавить ещё цифры (19 или 20 в зависимости от века), да ещё и точки убрать, чтобы получилось 19970306? Нет нормального варианта чтоб это сделать? Спасибо
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2018, 13:47
Ответы с готовыми решениями:

Преобразование даты
Проконсультируйте пожалуйста, как в цикле описать дату любого месяца. Т.е. нужно выводить ...

Запрет ввода даты рождения и даты выдачи водительского удостоверения, меньше 18 лет
Доброй ночи, программисты! Помогите пожалуйста: с запретом ввода даты рождения и даты выдачи...

Вывод даты в ясейку Excel в формате даты
Здравствуйте. Пытаюсь вывести из табличной части обработки 1с дату в ячейку Excel: Лист.Cells(Стр...

Преобразование даты и поиск даты в массиве
Есть файл Excel на одном листе приведены массив дат, во втором листе приведены данные среди...

Преобразование даты
Помогите пожалуйста, как правильно написать , чтоб воспринималась дата. ...

12
_ЕГОР_
Тест
Эксперт 1С
378 / 160 / 55
Регистрация: 26.02.2010
Сообщений: 1,206
25.07.2018, 14:11 2
1C
1
Формат(Дата, "ДФ=ггггММдд")
0
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
25.07.2018, 14:18  [ТС] 3
Я в смысле сделать не это чудо "19970306", а преобразовать это "06.03.97" без всяких махинаций со строкой

Добавлено через 5 минут
Просто вот это вот, как-то слишком страшно)
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ИначеЕсли (Строка(РеквизитТип) = "Дата") И (СтрДлина(СокрЛП(СтрокаСФайла)) > 4) Тогда
            ЭлДаты = СтрЗаменить(СтрокаСФайла, ".",Символы.ПС);   
            СтрДата = СтрПолучитьСтроку(ЭлДаты,3) + СтрПолучитьСтроку(ЭлДаты,2) + СтрПолучитьСтроку(ЭлДаты,1);
            Если Число(СтрПолучитьСтроку(ЭлДаты,3)) > 20 тогда
                СтрДата = "19" + СтрДата;
            Иначе
                СтрДата = "20" + СтрДата;
            КонецЕсли;
            
            RegExp = Новый COMОбъект("VBScript.RegExp");
            RegExp.IgnoreCase = Истина; 
            RegExp.Global = Истина; 
            RegExp.MultiLine = Истина;
            
            RegExp.Pattern = "[^0-9]";          
            СтрДата=RegExp.Replace(СтрДата, "");
            Спр[Реквизит.Имя] = Дата(СтрДата);
0
Yulunga
475 / 342 / 86
Регистрация: 22.04.2013
Сообщений: 2,309
Записей в блоге: 1
Завершенные тесты: 1
25.07.2018, 15:57 4
ну если вам нравится писать такие штуки без махинаций зато со строкой, то запретить это дело нельзя
0
25.07.2018, 15:57
polax
1081 / 690 / 243
Регистрация: 16.01.2015
Сообщений: 2,654
25.07.2018, 18:22 5
Лучший ответ Сообщение было отмечено Александр321321 как решение

Решение

Александр321321, Да, мудрить надо, но у вас что-то чрезвычайно замудрено. Если формат даты в файле всегда ДД.ММ.ГГ, то вот так проще на порядок
1C
1
2
3
 СтрДеньМесяц = Лев(СтрокаСФайла,6);
    СтрВек = ?(Число(Прав(СтрокаСФайла,2))>20, "19","20");
    НужнаяДата = Дата(СтрДеньМесяц + СтрВек + Прав(СтрокаСФайла,2)+ " 00:00:00");
1
Yulunga
475 / 342 / 86
Регистрация: 22.04.2013
Сообщений: 2,309
Записей в блоге: 1
Завершенные тесты: 1
25.07.2018, 18:47 6
polax, а зачем танцы с веком? я чот не врубаюсь
0
polax
1081 / 690 / 243
Регистрация: 16.01.2015
Сообщений: 2,654
25.07.2018, 20:10 7
Yulunga, Строку преобразует в дату, когда строка все же нужного формата и в том числе год полностью, из 4-х цифр. Если век не подставлять то от строки "03.08.70" преобразование в дату- 03.08.0070. Согласись, не то как-то )))
0
Yulunga
475 / 342 / 86
Регистрация: 22.04.2013
Сообщений: 2,309
Записей в блоге: 1
Завершенные тесты: 1
25.07.2018, 21:36 8
так и преобразовывай в гггг а не в гг, и будет 2070 или 1930, как надо.
0
polax
1081 / 690 / 243
Регистрация: 16.01.2015
Сообщений: 2,654
25.07.2018, 21:44 9
Yulunga, Не понял. Пример кода приведи. Есть строка "ДД.ММ.ГГ" как преобразовать в дату, чтобы программа поняла какие две цифры подставить перед сокращенным годом
0
Yulunga
475 / 342 / 86
Регистрация: 22.04.2013
Сообщений: 2,309
Записей в блоге: 1
Завершенные тесты: 1
25.07.2018, 22:08 10
а. не прочитал вечером. а на работе прочиталось криво. да, ты прав. )
0
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
26.07.2018, 08:32  [ТС] 11
Спасибо. Ну раз без махинаций никуда, то остановлюсь на своём варианте
0
polax
1081 / 690 / 243
Регистрация: 16.01.2015
Сообщений: 2,654
26.07.2018, 11:11 12
Александр321321, если свой вариант, то исключите регулярные выражения. Не нужны они. Строка формата "дд.мм.гггг чч:мм:сс" прекрасно преобразуется в дату Дата(Строка).
0
Александр321321
48 / 14 / 16
Регистрация: 11.11.2014
Сообщений: 397
26.07.2018, 12:51  [ТС] 13
Регулярка нужна, только потому что там каким-то магическим образом пробелы и перенос строки появляется, ну чтобы не мучаться пошёл по 100% пути. Мб когда-нибудь к этому вернуть, но на первое время и так сойдёт. Спасибо
0
26.07.2018, 12:51
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2018, 12:51

Преобразование даты
Добрый день. ввел в ступор пустяковый вопрос. есть netcdf с месячными суммами осадков, в котором...

Преобразование даты
формат даты заносит 1899, но почему не могу понять. Раньше тоже функцию такую писал и все норм а...

Преобразование даты js
здравствуйте. есть дата в таком виде:2013-01-01 00:00:00 а нужно получить 2013,0,1,0,0,0 для того...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.