diff --git a/src/eitd/xmlutil.cpp b/src/eitd/xmlutil.cpp index ebaa25e27..bdbc80f79 100644 --- a/src/eitd/xmlutil.cpp +++ b/src/eitd/xmlutil.cpp @@ -477,10 +477,18 @@ bool readEventsFromXMLTV(std::string &epgname, int &ev_count) struct tm starttime, stoptime; strptime(start, "%Y%m%d%H%M%S %z", &starttime); strptime(stop, "%Y%m%d%H%M%S %z", &stoptime); - time_t start_time = mktime(&starttime); - time_t duration = mktime(&stoptime)-start_time; + time_t start_time = mktime(&starttime) + starttime.tm_gmtoff; + time_t duration = mktime(&stoptime) + stoptime.tm_gmtoff - start_time; + + t_channel_id epgid = 0; + time_t current_time; + time(¤t_time); + double time_diff = difftime(current_time, start_time + duration); + + // just loads events if they end is in the future + if (time_diff < 0) + epgid = getepgid(chan); - t_channel_id epgid = getepgid(chan); if (epgid != 0) { //printf("\e[1;34m%s - %d - %s 0x%012" PRIx64 "(%ld) (%ld)\e[0m\n",__func__, __LINE__,chan, epgid, start_time, duration); diff --git a/src/nhttpd/tuxboxapi/controlapi.cpp b/src/nhttpd/tuxboxapi/controlapi.cpp index b230a76c2..cb8970b43 100644 --- a/src/nhttpd/tuxboxapi/controlapi.cpp +++ b/src/nhttpd/tuxboxapi/controlapi.cpp @@ -3262,11 +3262,11 @@ void CControlAPI::xmltvepgCGI(CyhookHandler *hh) programmeTag = "programme "; programmeTag += "channel=\""+string_printf(PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS, channel_id)+"\" "; char zbuffer[25] = { 0 }; - struct tm *mtime = localtime(&eventIterator->startTime); + struct tm *mtime = gmtime(&eventIterator->startTime); strftime(zbuffer, 21, "%Y%m%d%H%M%S %z", mtime); programmeTag += "start=\""+std::string(zbuffer)+"\" "; long _stoptime = eventIterator->startTime + eventIterator->duration; - mtime = localtime(&_stoptime); + mtime = gmtime(&_stoptime); strftime(zbuffer, 21, "%Y%m%d%H%M%S %z", mtime); programmeTag += "stop=\""+std::string(zbuffer)+"\" ";