Цитата(super_puper @ Aug 24 2015, 11:57)

думал это очень распространено но потратил 2 часа не нашел кода на си для такой типичной операции.
формат: год месяц день минуты секунды перевести в секунды с 1970 года
желательно проверенный красивый код и наверное без циклов)
Перевод туда-сюда. Правда, начало эпохи 01.01.2000 00:00:00.
Коректно работет до 2100 года. Время добавить самостоятельно)
CODE
//-----------------------------------------------------------------------------
// void int_to_date(const DWORD jd, DWORD *y, DWORD *m, DWORD *d)
//-----------------------------------------------------------------------------
void int_to_date(const DWORD jd, DWORD *y, DWORD *m, DWORD *d)
{
int aa, bb, cc, dd, ee, mm, xx;
aa = jd + 2483589;
bb = (aa * 4 + 3) / 146097;
cc = aa - ((146097 * bb) >> 2);
dd = (4 * cc + 3) / 1461;
ee = cc - ((1461 * dd) >> 2);
mm = ((5 * ee + 2) * 13707) >> 21;
*d = ee - ((16043274 * mm + 209716) >> 19) + 1;
*m = mm + 3 - 12 * ((mm * 27) >> 8);
*y = 100 * bb + dd - 4800 + ((mm * 27) >> 8);
}
//-----------------------------------------------------------------------------
// DWORD date_to_int(DWORD y, DWORD m, const DWORD d)
//-----------------------------------------------------------------------------
DWORD date_to_int(DWORD y, DWORD m, const DWORD d)
{
if(m < 3)
{
m += 12;
y -= 1;
}
return ((y * 1461) >> 2) + ((m * 306 + 7) / 10) + d - 730533;
}