crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QDate и Unix time
dexter_cs
  опции профиля:
сообщение 26.9.2011, 14:00
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 26.9.2011
Пользователь №: 2909

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день.
Интересует такой вопрос.
Есть база данных, в ней хранятся данные, необходимо отфильтровать по дате, но дата идет в unixtime. соотвественно в секундах. И есть QCalendarWidget и метод clicked(const QDate &date).
Необходимо сделать чтобы при клике данные фильтровались на выбранную дату. Проблема в следующем. Возможно ли как-либо перевести из QDate в секунды для того чтобы сделать фильтр по дате.
Заранее спасибо за помощь)) В Qt начал работать относительно недавно.

Есть свой вариант. Перевести в QString затем добавить время и их этого перевести в QDateTime, далее в unixtime, потом прибавить 1 день и в QSqlTableModel::setFilter указать диапазон... но помоему такая куча переводов выглядит криво...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
hoRUS
  опции профиля:
сообщение 26.9.2011, 14:01
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 10.7.2008
Из: Москва
Пользователь №: 231

Спасибо сказали: 5 раз(а)




Репутация:   0  


Это не подойдёт?

qint64 QDateTime::toMSecsSinceEpoch () const


"Returns the datetime as the number of milliseconds that have passed since 1970-01-01T00:00:00.000, Coordinated Universal Time (Qt::UTC).
On systems that do not support time zones, this function will behave as if local time were Qt::UTC.
The behavior for this function is undefined if the datetime stored in this object is not valid. However, for all valid dates, this function returns a unique value.
This function was introduced in Qt 4.7."
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dexter_cs
  опции профиля:
сообщение 26.9.2011, 14:11
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 26.9.2011
Пользователь №: 2909

Спасибо сказали: 0 раз(а)




Репутация:   0  


Если бы подходила использовал бы, там класс другой QDateTime, а в календаре передает QDate, если альтернатив кроме как перевода из одного в другое нету, то буду использовать переводы, просто как-то не очень это выглядит...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
hoRUS
  опции профиля:
сообщение 26.9.2011, 14:18
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 30
Регистрация: 10.7.2008
Из: Москва
Пользователь №: 231

Спасибо сказали: 5 раз(а)




Репутация:   0  


Инициализируем объект QDateTime объектом QDate
QDateTime::QDateTime ( const QDate & date )

Constructs a datetime with the given date, a valid time(00:00:00.000), and sets the timeSpec() to Qt::LocalTime.


Или настраиваем объект QDateTime на объект QDate

void QDateTime::setDate ( const QDate & date )

Sets the date part of this datetime to date. If no time is set, it is set to midnight.

Итого (например)
qint64 dateInSecs = QDateTime(date).toMSecsSinceEpoch() / 1000;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dexter_cs
  опции профиля:
сообщение 26.9.2011, 14:30
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 26.9.2011
Пользователь №: 2909

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, подумаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dexter_cs
  опции профиля:
сообщение 26.9.2011, 15:37
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 26.9.2011
Пользователь №: 2909

Спасибо сказали: 0 раз(а)




Репутация:   0  


qint64 dateInSec = QDateTime(date).toMSecsSinceEpoch()/1000;
qint64 dateInSec2 = dateInSec + 86400;
dbconnection->setDateFilter(dateInSec, dateInSec2);


Диапазон. Спасибо за помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 21:32