crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 28.3.2024, 18:17