Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738

Преобразование даты и поиск даты в массиве

14.01.2017, 18:11. Показов 6798. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл Excel на одном листе приведены массив дат, во втором листе приведены данные среди которых, также приведены даты, но в виде числа. Затем нужно выполнить поиск в массиве дат листа 2 и при совпадении дат найти позицию в массиве.
Данные считал:
данные с первого листа
date1=31.02.2010 31.12.2011 05.01.2004 - тип DateTime
данные со второго листа
date2= 37987 37988 37991 37992 37993 37994 37995 37998 тип Double

Вопрос
как мне преобразовать данные, чтоб я мог сравнить данные date1 с date2 с нахождением позиции даты в массиве? Хотел через find с условием, но проблема с преобразованием типов.

Как делал, пробовал преобразовать числа в дату через datestr(date2) но преобразует неверно
datestr(37987) = 02-Jan-0104 должно быть 01-Jan-2004 почему непонятно?

Хотел преобразовать через datenum(date1), тоже преобразует не правильно в число? Что делаю не так?

Добавлено через 14 минут
Дополню
тип DateTime dT=31.12.2010
datenum(dT)=734503 а должно быть, если форматировать в файле Excel 40543.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2017, 18:11
Ответы с готовыми решениями:

Поиск даты в строке - преобразование - сортировка
Есть таблица TABLE1 с полем LABEL, в ней 3 записи contract N1521 till 12.01.05 contract 455554 till 29.09.04 contract N8735 ...

Поиск даты в массиве
Добрый день. Помогите решить задачку: есть 2 даты(24.10.2016 -начало и 31.10.2016 - конеч), я от начала до конца прохожу циклом for для...

Преобразование даты
Здравствуйте. Переношу данные в 1с8 и в файлах даты хранятся в таком виде: "06.03.97". Я вот не понимаю, этот язык создан чтобы...

10
319 / 258 / 30
Регистрация: 30.03.2013
Сообщений: 755
15.01.2017, 00:07
Лучший ответ Сообщение было отмечено faraonCar как решение

Решение

Matlab M
1
2
3
dt = {'2010-12-31'};
t=datetime( dt,'InputFormat','yyyy-MM-dd'); % создаем datetime t = 31-Dec-2010
t1=datenum(dt); % переводим datetime в числовую форму =734503
а если нужен формат Excel то так :
https://www.mathworks.com/help... xdate.html
1
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
15.01.2017, 12:28  [ТС]
Переписал код считанные даны разместил в ячейках.
Вид данных с первого листа:
Matlab M
1
2
3
4
5
date1='31.12.2010' '31.12.2011' '31.12.2012' %тип cell
date2=37987 37988 37991 37992 37993 %тип double
MATLABDate = x2mdate(date2, 1)
dd=datestr(MATLABDate)
% получаю 2 января 2008 в Excel 01.01.2004
Формат даты у меня через точку, значение double не соответствует значению double 2 листа. лист 2 37987 а конвертация по дате листа 1 7000
функция datetime не конвертирует дату вида 31.10.2010
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
15.01.2017, 12:34  [ТС]
Вот файл может так проще будет Вам понять.
Вложения
Тип файла: xlsx date.xlsx (8.6 Кб, 8 просмотров)
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
15.01.2017, 13:00  [ТС]
Вот как получилось преобразовать double в дату
Matlab M
1
x2mdate(dateOtherComp, 0);  %Convention = 0
Как теперь можно сравнить дату формата 31.10.2014 с полученной датой формат 01-Jan-2004?

Добавлено через 17 минут
Думаю лучше было, если бы дату типа 31.12.2014 можно было преобразовать в double, а там уже можно делать все что угодно.
0
319 / 258 / 30
Регистрация: 30.03.2013
Сообщений: 755
15.01.2017, 22:01
можно еще так :

Matlab M
1
2
3
a = xlsread('date.xlsx','A2:A5');  
aa=a+693960;  
datestr(aa, 'dd.mm.yyyy')
1
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
16.01.2017, 20:06  [ТС]
А что тогда за число 693960?
0
319 / 258 / 30
Регистрация: 30.03.2013
Сообщений: 755
16.01.2017, 21:41
число 693960 позволяет перевести дату Excel в дату Matlab когда функция x2mdate переводит неправильно
1
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
16.01.2017, 22:19  [ТС]
А что стоит за этим числом - год, месяц или это просто переводной коэффициент?
0
319 / 258 / 30
Регистрация: 30.03.2013
Сообщений: 755
16.01.2017, 22:28
раз это число просто прибавляем - это просто константа перевода
1
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
17.01.2017, 19:52  [ТС]
Нашел , это разница в 693960 по отношению к системе дат 1900 г. https://www.mathworks.com/help... xdate.html
А как теперь вернуть число в дату?
Matlab M
1
date=[734503 734868 735234 735599]
Пробовал отнять 693960 и потом кинуть через datetime перевела неверно.
Добавлено через 1 час 10 минут
И как полученные даты формата dd.mm.yyyy записать в файл Excel?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2017, 19:52
Помогаю со студенческими работами здесь

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

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

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

Преобразование даты
Добрый день, уважаемые форумчане! Дело в том, что мы в универе учимся работать с БД. У каждого из нас (студентов) есть свой...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru