crossplatform.ru

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


  Ответ в Преобразовать int64 в QDate
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
iddqd Дата 28.7.2010, 20:34
 
Цитата(SABROG @ 21.7.2010, 18:43) *
Ты под Symbian пишешь?


Нет, под десктоп, но вот формат данных совпадает с TTime из Symbian C++.

Дата должна получиться - 06.02.1960

PS: тему оказывается разделили, а уведомлений никаких не пришло...
SABROG Дата 21.7.2010, 17:43
 
Цитата(iddqd @ 21.7.2010, 17:01) *
SABROG, год должен получиться 1960-й

Правильно, чуток не верно посчитал:

61855747200000000 / 1000 = 61855747200000 // переводим в миллисекунды
61855747200000 / 1000 = 61855747200  // переводим в секунды

365.2424 * 24 * 60 * 60 = 31556943.36 // вычисляем количество секунд в году Грегорианского календаря

61855747200 / 31556943.36 = 1960.1 // получаем количество лет
4,13821440 - остаток 4 секунды.


То есть судя по маленькому остатку у тебя в базе почти ровная дата 01-01-1960 00:00:04

Ты под Symbian пишешь?
iddqd Дата 21.7.2010, 16:01
  SABROG, год должен получиться 1960-й
SABROG Дата 21.7.2010, 15:49
 
Цитата(iddqd @ 21.7.2010, 12:40) *
61855747200000000


1956 год должен получиться или ты результат не можешь проверить?
iddqd Дата 21.7.2010, 11:40
  qint64 равно 61855747200000000

в бинарном виде в файле:
00 20 2C 6F 79 C1 DB


читаю как
QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file); 
in.setByteOrder(QDataStream::LittleEndian);

qint64 b64;
in >> b64;
SABROG Дата 21.7.2010, 10:56
 
Цитата(iddqd @ 20.7.2010, 15:43) *
AD


AD - Anno Domini (lat), От Рождества Христова

Цитата(iddqd @ 20.7.2010, 10:36) *
Пробовал QDateTime::addMSecs()

Этот метод добавляет миллисекунды, а не микросекунды. 1 миллисекунда = 1000 микросекунд. QDateTime работает от 1970 года, а не от Рождества Христова. Приведи полное значение числа на форуме.
iddqd Дата 20.7.2010, 14:43
  qint64 представляет из себя "a number of microseconds since midnight, January 1st, 0 AD nominal Gregorian.".
Litkevich Yuriy Дата 20.7.2010, 14:41
 
Цитата(iddqd @ 20.7.2010, 18:13) *
Дата может быть как до 1970, так и после 1970 года.
ну скажи, как у тебя дата представлена, что собой представляет единица (секунду, час, с каким смещением, ...).
в виде int64 можно хранить какую угодно информацию.
iddqd Дата 20.7.2010, 14:13
  Дата может быть как до 1970, так и после 1970 года. Так что эти функции не помогают...
Litkevich Yuriy Дата 20.7.2010, 14:06
  iddqd, возможно дата в Unix-формате, тогда используй:
QDateTime QDateTime::fromTime_t ( uint seconds ) [static]
ну а из него уже получишь только дату

чуток опопздал :)
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 7:11