Можно использовать дурак для отправки электронного письма с вложением
mutt -s "Backup" -a mysqldbbackup.sql backup@email.com < message.txt
Будьте осторожны с високосными годами в вашей функции daysInMonth.
Если вам нужна очень высокая производительность, вы можете предварительно вычислить пару, чтобы получить месяц + год за один шаг, а затем вычислить день /hour/min/sec.
Хорошее решение - в исходном коде gmtime :
/*
* gmtime - convert the calendar time into broken down time
*/
/* $Header: gmtime.c,v 1.4 91/04/22 13:20:27 ceriel Exp $ */
#include <time.h>
#include <limits.h>
#include "loc_time.h"
struct tm *
gmtime(register const time_t *timer)
{
static struct tm br_time;
register struct tm *timep = &br_time;
time_t time = *timer;
register unsigned long dayclock, dayno;
int year = EPOCH_YR;
dayclock = (unsigned long)time % SECS_DAY;
dayno = (unsigned long)time / SECS_DAY;
timep->tm_sec = dayclock % 60;
timep->tm_min = (dayclock % 3600) / 60;
timep->tm_hour = dayclock / 3600;
timep->tm_wday = (dayno + 4) % 7; /* day 0 was a thursday */
while (dayno >= YEARSIZE(year)) {
dayno -= YEARSIZE(year);
year++;
}
timep->tm_year = year - YEAR0;
timep->tm_yday = dayno;
timep->tm_mon = 0;
while (dayno >= _ytab[LEAPYEAR(year)][timep->tm_mon]) {
dayno -= _ytab[LEAPYEAR(year)][timep->tm_mon];
timep->tm_mon++;
}
timep->tm_mday = dayno + 1;
timep->tm_isdst = 0;
return timep;
}
Это в значительной степени зависит от того, какой файл система, в которой вы собираетесь хранить файлы. Возможности файловых систем по работе с большим количеством файлов сильно различаются.
Ваш коллега по существу предлагает использовать структуру данных Trie . Использование такой структуры каталогов означало бы, что на каждом уровне каталогов есть только несколько файлов / каталогов на выбор; gmtime ()
или localtime ()
преобразует time_t
(секунды с начала эпохи, т. Е. 1 января 1970 г., 00:00:00) в struct tm
. Затем strftime ()
можно использовать для преобразования struct tm
в строку ( char *
) на основе указанного вами формата.
см .: http://www.cplusplus.com/reference/clibrary/ctime/
Расчет даты и времени может оказаться непростым. Гораздо лучше использовать существующее решение, чем пытаться разворачивать собственное, если у вас нет действительно веской причины.
см .: http://www.cplusplus.com/reference/clibrary/ctime/
Вычисление даты / времени может оказаться сложным. Намного лучше использовать существующее решение, чем пытаться разворачивать собственное, если у вас нет действительно веской причины.
см .: http://www.cplusplus.com/reference/clibrary/ctime/
Расчет даты / времени может оказаться сложным. Намного лучше использовать существующее решение, чем пытаться разворачивать собственное, если у вас нет действительно веской причины.
Если ваш исходный тип времени - time_t, вы должны использовать функции из time.h, то есть gmtime и т. д. . получить переносимый код. Стандарты C / C ++ не определяют внутренний формат (или даже точный тип) для time_t, поэтому вы не можете напрямую преобразовывать или манипулировать значениями time_t.
Все, что известно, это то, что time_t - это «арифметический тип», но результаты арифметических операции не указаны - даже сложить / вычесть достоверно нельзя. На практике многие системы используют целочисленный тип для time_t с внутренним форматом секунд с эпохи, но это не предусмотрено стандартами.
Короче говоря, используйте gmtime (и time.