Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перевод TDateTimePicker в календарное время, конвертирование даты в секунды 
V
    Опции темы
IF
Дата 6.11.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.1.2007

Репутация: нет
Всего: нет



необходимо конвертировать значение получаемое от TDateTimePicker в виде DateTime в секунды long.
т.е. перевести дату-время в секунды. значение должно быть в long или int. чтобы можно было в бд занести.
а так же надо конвертировать строку типа 6.11.2009 12:11:24 в те же самые секунды, для занесения в бд. 
с помощью чего это можно сделать?
time(NULL) возвращает текущее значение даты-времени в секундах, а можно ли вместо NULL как-то подставить значение из пикера или строку?
PM MAIL   Вверх
Anikmar
Дата 6.11.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Что значит в секунды? Сколько секунд прошло с определенной даты или с начала дня?
Там есть поле Value на сколько я помню. Целая часть - кол-во дней, дробная - кол-во миллисекунд с начала дня (или наоборот - посмотрите в справке).
PM MAIL ICQ   Вверх
IF
Дата 6.11.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.1.2007

Репутация: нет
Всего: нет



в количество секунд, прошедших от 1 января 1970 года. 
календарное время называется.

PM MAIL   Вверх
bsa
Дата 6.11.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(IF @ 6.11.2009,  14:06)
в количество секунд, прошедших от 1 января 1970 года. 
календарное время называется.

тогда уж time_t, а не long или int.
читай документацию про mktime и localtime.
PM   Вверх
mrbrooks
Дата 6.11.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(bsa @  6.11.2009,  15:27 Найти цитируемый пост)
тогда уж time_t, а не long или int.

да в билдере все гораздо прозаичнее, покатит и __int64. 

Код

__int64 second = DateTimeToUnix(DateTimePicker->DateTime); //количество секунд с 01.01.1970


Цитата(IF @  6.11.2009,  13:26 Найти цитируемый пост)
а так же надо конвертировать строку типа 6.11.2009 12:11:24 в те же самые секунды

С помощью перегруженного конструктора класса TDateTime или его функционала.

Добавлено через 1 минуту и 50 секунд
Функция DateTimeToUnix живет в <DateUtils.hpp>
PM MAIL   Вверх
Anikmar
Дата 6.11.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(IF @  6.11.2009,  14:06 Найти цитируемый пост)
в количество секунд, прошедших от 1 января 1970 года. 
календарное время называется.

Вообще-то календарным временем обычно называют время, измеряемое определенной системой единиц отсчета, принятой в данной культуре. 
Лично я не понял какую конкретно культуру вы имели в виду.
PM MAIL ICQ   Вверх
bsa
Дата 6.11.2009, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Anikmar, POSIX. Это количество секунд от начала эпохи Unix.
PM   Вверх
Anikmar
Дата 6.11.2009, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(bsa @  6.11.2009,  22:56 Найти цитируемый пост)
Anikmar, POSIX. Это количество секунд от начала эпохи Unix. 

А при чем здесь C/C++: Для новичков ?  smile 
PM MAIL ICQ   Вверх
bsa
Дата 6.11.2009, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Потому что time_t/time/mktime это стандартные функции. Просто принято, что time() возвращает время от начала эпохи Unix.
PM   Вверх
Anikmar
Дата 6.11.2009, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(bsa @  6.11.2009,  23:33 Найти цитируемый пост)
Потому что time_t/time/mktime это стандартные функции. Просто принято, что time() возвращает время от начала эпохи Unix. 

Но вопрос ТС выглядел так?

Цитата(IF @  6.11.2009,  13:26 Найти цитируемый пост)
необходимо конвертировать значение получаемое от TDateTimePicker в виде DateTime в секунды long.
т.е. перевести дату-время в секунды. значение должно быть в long или int. чтобы можно было в бд занести.


time_t/time/mktime - не звучало вообще?
PM MAIL ICQ   Вверх
IF
Дата 7.11.2009, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.1.2007

Репутация: нет
Всего: нет



все спасибо!
вопрос решен!
скоро напишу решение!
PM MAIL   Вверх
IF
Дата 9.11.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.1.2007

Репутация: нет
Всего: нет



Код
time_t rawtime;
struct tm * targetDate;
memset(&targetDate, 0, sizeof(targetDate));
time ( &rawtime );
targetDate = localtime ( &rawtime );
targetDate->tm_year = 2009-1900; //год от 1900
targetDate->tm_mon = 11-1; //месяц считается с 0
targetDate->tm_mday = 6; //день
targetDate->tm_hour = 12; //день
targetDate->tm_min = 11;
targetDate->tm_sec = 24;

mktime(targetDate)  //выведет число секунд с unix времен))



Модератор: Не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 9.11.2009, 17:10
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0806 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.