!! Отредактировано
Ниже приведена другая попытка, у меня в результате rawtime
, так что всего несколько секунд, и мне нужно преобразовать количество дней, вероятно, выполнив rawtime / 86400
. Но даже с этим кодом windows всегда дает 0
в качестве результата, и xcode работает правильно.
typedef struct {
char firstName[20];
char lastName[20];
char fiscalCode[17];
STATESICK stateSick;
struct tm start;
struct tm end;
} SICKREGION;
{ "PlutoPluto", "Leonardi", "GRSBDT06B48F839T", stayHome, { 0, 0, 0, 28, 2, 2020 }, { 0, 0, 0, 29, 2, 2020 }},
void timeDiff() {
double rawtime = 0;
int i = 0;
int k = 0;
int j = 0;
for (i = 0; i < 1; i++) {
for (j = 0; j < 1; j++) {
for (k = 0; k < 1; k++) {
rawtime = difftime(mktime(®ion[i].hospital[j].sickregion[k].end),
mktime(®ion[i].hospital[j].sickregion[k].start));
}
}
}
printf("%g\n", rawtime);
}
Я работаю над проектом для моего C класса с моими коллегами. У нас есть проблема, нам нужно получить разницу между датами, взятыми из структур. Функция, которую я сделал , работает, но только на моей маме c, на Windows не работает. , у нас есть 0
как результат, в любое время. кто-нибудь знает почему? Спасибо, Серхио.
Вот код:
void timeDiff() {
struct tm ts;
char buf[80];
long rawtime = 0;
int i = 0;
int k = 0;
int j = 0;
for (i = 0; i < 1; i++) {
for (j = 0; j < 1; j++) {
for (k = 0; k < 3; k++) {
struct tm end;
end.tm_mday = region[i].hospital[j].sickregion[k].dateHealing.day;
end.tm_mon = region[i].hospital[j].sickregion[k].dateHealing.month;
end.tm_year = region[i].hospital[j].sickregion[k].dateHealing.year;
struct tm start;
start.tm_mday = region[i].hospital[j].sickregion[k].dateDiagnosis.day;
start.tm_mon = region[i].hospital[j].sickregion[k].dateDiagnosis.month;
start.tm_year = region[i].hospital[j].sickregion[k].dateDiagnosis.year;
rawtime = difftime(mktime(&end), mktime(&start)) ;
ts = *localtime(&rawtime);
}
}
}
strftime(buf, sizeof(buf), "%j", &ts);
printf("%s\n", buf);
}