Преобразовать int64 в QDate |
Здравствуйте, гость ( Вход | Регистрация )
Преобразовать int64 в QDate |
iddqd |
20.7.2010, 9:36
Сообщение
#1
|
Студент Группа: Участник Сообщений: 32 Регистрация: 26.11.2009 Пользователь №: 1261 Спасибо сказали: 1 раз(а) Репутация: 0 |
Есть дата, хранящаяся в микросекундах в виде int64.
Как правильнее и быстрее преобразовать её в QDate/QDateTime ? Пробовал QDateTime::addMSecs(), не это не то, так как результат в дебаггере показывает 1531 год |
|
|
maint |
20.7.2010, 14:04
Сообщение
#2
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
Есть дата, хранящаяся в микросекундах в виде int64. Как правильнее и быстрее преобразовать её в QDate/QDateTime ? Пробовал QDateTime::addMSecs(), не это не то, так как результат в дебаггере показывает 1531 год по моему так void QDateTime::setTime_t ( uint seconds ) Sets the date and time given the number of seconds that have passed since 1970-01-01T00:00:00, Coordinated Universal Time (Qt::UTC). On systems that do not support time zones this function will behave as if local time were Qt::UTC. только округлить до секунд Сообщение отредактировал maint - 20.7.2010, 14:05 |
|
|
Litkevich Yuriy |
20.7.2010, 14:06
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
iddqd, возможно дата в Unix-формате, тогда используй:
QDateTime QDateTime::fromTime_t ( uint seconds ) [static] ну а из него уже получишь только дату чуток опопздал |
|
|
iddqd |
20.7.2010, 14:13
Сообщение
#4
|
Студент Группа: Участник Сообщений: 32 Регистрация: 26.11.2009 Пользователь №: 1261 Спасибо сказали: 1 раз(а) Репутация: 0 |
Дата может быть как до 1970, так и после 1970 года. Так что эти функции не помогают...
|
|
|
Litkevich Yuriy |
20.7.2010, 14:41
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
iddqd |
20.7.2010, 14:43
Сообщение
#6
|
Студент Группа: Участник Сообщений: 32 Регистрация: 26.11.2009 Пользователь №: 1261 Спасибо сказали: 1 раз(а) Репутация: 0 |
qint64 представляет из себя "a number of microseconds since midnight, January 1st, 0 AD nominal Gregorian.".
Сообщение отредактировал iddqd - 20.7.2010, 14:43 |
|
|
SABROG |
21.7.2010, 10:56
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
AD AD - Anno Domini (lat), От Рождества Христова Пробовал QDateTime::addMSecs() Этот метод добавляет миллисекунды, а не микросекунды. 1 миллисекунда = 1000 микросекунд. QDateTime работает от 1970 года, а не от Рождества Христова. Приведи полное значение числа на форуме. |
|
|
iddqd |
21.7.2010, 11:40
Сообщение
#8
|
Студент Группа: Участник Сообщений: 32 Регистрация: 26.11.2009 Пользователь №: 1261 Спасибо сказали: 1 раз(а) Репутация: 0 |
qint64 равно 61855747200000000
в бинарном виде в файле:
читаю как
|
|
|
SABROG |
21.7.2010, 15:49
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
iddqd |
21.7.2010, 16:01
Сообщение
#10
|
Студент Группа: Участник Сообщений: 32 Регистрация: 26.11.2009 Пользователь №: 1261 Спасибо сказали: 1 раз(а) Репутация: 0 |
SABROG, год должен получиться 1960-й
|
|
|
Текстовая версия | Сейчас: 11.12.2024, 13:17 |