| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > работа с SYSTEMTIME, FILETIME |
| Автор: Dmitry_177 17.12.2006, 17:56 | ||
Функцией GelLocalTime я узнаю текущее время установленное на компьютере в структуре SYSTEMTIME.. А вот как мне к этому времени прибавить например день, но так что если текущий день будет последним в текущем месяце то и месяц прибавится, так же и с годом... Попробовал сделать так:
День прибавляется, но без учета если текущий день будет последним в текущем месяце то и месяц прибавится, так же и с годом, т.е. получается и 32-й и 33-й и т.д.. день в месяце, чего нету на самом деле... Подозреваю что через FILETIME можно это реализовать, но как это сделать, т.е. математику этой структуры я что-то нигде не нашел, нашел единственное что время считается в 100нс, но так я и не понял, там есть dwHighDateTime и dwLowDateTime, и что с этим делать, как это считать? Прошу не посылась в MSDN, читал там... |
| Автор: dumb 17.12.2006, 22:02 | ||
|
| Автор: bems 18.12.2006, 01:51 | ||
в FILETIME лежит количество 100нс с какой-то средневековой даты, поэтому найти разницу между двумя датами можно, а вот промежуток времени в пару дней конвертировать при помощи SystemTimeToFileTime уже не выйдет. Поэтому придется ручками. Например так:
а - должно быть корректной датой b - любой набор полей (все добавляется к а) день недели не меняется, поэтому вероятно будет неправильным после сложения. Если тебе нада то сконверть результат в FILETIME а потом обратно - день недели установиться Добавлено @ 01:55 dumb, хм... вариант Добавлено @ 02:05 да, я не боюсь трудностей! |
| Автор: Romikgy 20.12.2006, 18:04 | ||
|