// localTimezoneOffset: 841 == "None", -841 == "Auto", other == fixed offset static void fromXMLTVDate(QString ×tr, QDateTime &dt, int localTimezoneOffset = 841) { if (timestr.isEmpty()) { VERBOSE(VB_XMLTV, "Found empty Date/Time in XMLTV data, ignoring"); return; } QStringList split = timestr.split(" "); QString ts = split[0]; bool ok; int year = 0, month = 0, day = 0, hour = 0, min = 0, sec = 0; if (ts.length() == 14) { year = ts.left(4).toInt(&ok, 10); month = ts.mid(4,2).toInt(&ok, 10); day = ts.mid(6,2).toInt(&ok, 10); hour = ts.mid(8,2).toInt(&ok, 10); min = ts.mid(10,2).toInt(&ok, 10); sec = ts.mid(12,2).toInt(&ok, 10); } else if (ts.length() == 12) { year = ts.left(4).toInt(&ok, 10); month = ts.mid(4,2).toInt(&ok, 10); day = ts.mid(6,2).toInt(&ok, 10); hour = ts.mid(8,2).toInt(&ok, 10); min = ts.mid(10,2).toInt(&ok, 10); sec = 0; } else { VERBOSE(VB_IMPORTANT, QString("Ignoring unknown timestamp format: %1") .arg(ts)); return; } dt = QDateTime(QDate(year, month, day),QTime(hour, min, sec)); if ((split.size() > 1) && (localTimezoneOffset <= 840)) { QString tmp = split[1].trimmed(); int ts_offset = TimezoneToInt(tmp); if (abs(ts_offset) > 840) { ts_offset = 0; localTimezoneOffset = 841; } dt = dt.addSecs(-ts_offset * 60); } if (localTimezoneOffset < -840) { dt = MythUTCToLocal(dt); } else if (abs(localTimezoneOffset) <= 840) { dt = dt.addSecs(localTimezoneOffset * 60 ); } timestr = dt.toString("yyyyMMddhhmmss"); }
// localTimezoneOffset: 841 == "None", -841 == "Auto", other == fixed offset void fromXMLTVDate(QString ×tr, QDateTime &dt, int localTimezoneOffset = 841) { if (timestr.isEmpty()) { cerr << "Ignoring empty timestamp." << endl; return; } QStringList split = QStringList::split(" ", timestr); QString ts = split[0]; bool ok; int year = 0, month = 0, day = 0, hour = 0, min = 0, sec = 0; if (ts.length() == 14) { year = ts.left(4).toInt(&ok, 10); month = ts.mid(4,2).toInt(&ok, 10); day = ts.mid(6,2).toInt(&ok, 10); hour = ts.mid(8,2).toInt(&ok, 10); min = ts.mid(10,2).toInt(&ok, 10); sec = ts.mid(12,2).toInt(&ok, 10); } else if (ts.length() == 12) { year = ts.left(4).toInt(&ok, 10); month = ts.mid(4,2).toInt(&ok, 10); day = ts.mid(6,2).toInt(&ok, 10); hour = ts.mid(8,2).toInt(&ok, 10); min = ts.mid(10,2).toInt(&ok, 10); sec = 0; } else { cerr << "Ignoring unknown timestamp format: " << ts << endl; return; } dt = QDateTime(QDate(year, month, day),QTime(hour, min, sec)); if ((split.size() > 1) && (localTimezoneOffset <= 840)) { QString tmp = split[1]; tmp.stripWhiteSpace(); int ts_offset = TimezoneToInt(tmp); if (abs(ts_offset) > 840) { ts_offset = 0; localTimezoneOffset = 841; } dt = dt.addSecs(-ts_offset * 60); } if (localTimezoneOffset < -840) { dt = MythUTCToLocal(dt); } else if (abs(localTimezoneOffset) <= 840) { dt = dt.addSecs(localTimezoneOffset * 60 ); } timestr = dt.toString("yyyyMMddhhmmss"); }