C i czas


(nintyfan) #1

Czy istnieje jakaś funkcja standard C, która przyjmuje rok, miesiąc, dzień, godzinę, minutę, sekundę i zwraca strukturę tm lub typ time_t? Jeżeli jest to standardu POSIX lub SUS i będzie działać pod Linuksem, to też może być.


(Copycona) #2

A takie coś: http://www.cplusplus.com/reference/ctime/mktime/ ?


(nintyfan) #3

Struktura tm przyjmuje też dodatkowe parametry, a nigdzie nie jest napisane, jak pominąć uzupełnianie ich.


([alex]) #4

Co znaczy pominąć uzupełnianie?


(nintyfan) #5

To znaczy, że nie znam wartości lub flag, które nakazują funkcją, jak mktime, by nie brały tych pól pod uwagę. Chcę tylko uzupełniać rok, miesiąc, dzień, godzinę, minutę, sekundę. Nie chcę uzupełniać np. dnia tygodnia.


([alex]) #6

Akurat dnia tygodnia nie musisz uzupełniać.


(Rolek0) #7
#include 

time_t maketime(struct tm* ptm, int year, int month, int day, int hour, int minute, int second){

struct tm l;if(!ptm)ptm=&l;ptm->tm_sec=second;ptm->tm_min=minute;

ptm->tm_hour=hour;ptm->tm_mday=day;ptm->tm_mon=month-1;

ptm->tm_year=year-1900;ptm->tm_isdst=-1;return mktime(ptm);}

Użycie:

struct tm time;

time_t t = maketime(&time, 2012, 12, 21, 23, 59, 59);

Problem solved :wink:


(nintyfan) #8

Problem rozwiązany.