Пример #1
0
void QDropboxJson::setTimestamp(QString key, QDateTime value)
{
    QString valueToSave;
    valueToSave += translateDay(value.date().dayOfWeek()) + " ";
    valueToSave += QString::number(value.date().day()) + " ";
    valueToSave += translateMonth(value.date().month()) + " ";
    valueToSave += QString::number(value.date().year()) + " ";
    valueToSave += value.toString("hh:mm:ss");

    if(valueMap.contains(key)){
        *(valueMap[key].value.value) = valueToSave;
    }else{
        qdropboxjson_entry e;
        QString *valuePointer = new QString(valueToSave);
        e.value.value = valuePointer;
        e.type        = QDROPBOXJSON_TYPE_STR;
        valueMap[key] = e;
    }
}
Пример #2
0
QDateTime QDropboxJson::getTimestamp(QString key, bool force)
{
	if(!valueMap.contains(key))
		return QDateTime();

	qdropboxjson_entry e;
	e = valueMap.value(key);

	if(!force && e.type != QDROPBOXJSON_TYPE_STR)
		return QDateTime();

    // Dropbox date time format "Sat, 21 Aug 2010 22:31:20 +0000"
    QString day   = e.value.value->mid(1, 3);
    QString part1 = e.value.value->mid(6, 2);
    QString month = e.value.value->mid(9, 3);
    QString part2 = e.value.value->mid(13,13);
	        month = translateMonth(month);
            day   = translateDay(day);
    QString dval = QString("%1 %2 %3 %4").arg(day).arg(part1).arg(month).arg(part2);

    return QDateTime::fromString(dval, "ddd dd MMM yyyy hh:mm:ss");
}
Пример #3
0
RSSL_API RsslRet rsslDateTimeStringToDateTime(RsslDateTime *oDateTime, const RsslBuffer *iDateTimeString)
{
	int hour = 0;
	int minute = 0;
	int second = 0;
	int millisecond = 0;
	int micro = 0;
	int nano = 0;
	int a, b, c;
	char monthStr[32];
	char isoDate[9];
	char isoTime[7];
	char isoFractionalTime[10];

	if (iDateTimeString->data == NULL || iDateTimeString->length == 0)
	{
		oDateTime->date.day = 0;
		oDateTime->date.month = 0;
		oDateTime->date.year = 0;

		oDateTime->time.hour = 255;
		oDateTime->time.minute = 255;
		oDateTime->time.second = 255;
		oDateTime->time.millisecond = 65535;
		oDateTime->time.microsecond = 2047;
		oDateTime->time.nanosecond = 2047;
		
		return RSSL_RET_BLANK_DATA;
	}

	if (sscanf(iDateTimeString->data, "%4d-%2d-%2dT%2d:%2d:%2d.%9s", &a, &b, &c, &hour, &minute, &second, isoFractionalTime) == 7)
	{ /* Read ISO 8601 datetime format yyyy-mm-ddThh:mm:ss.nnnnnnnnn e.g. 2017-08-12T23:20:50.550967845  Or digits < 9 after decimal */
		oDateTime->date.day = c;
		oDateTime->date.month = b;
		oDateTime->date.year = a;
		oDateTime->time.hour = hour;
		oDateTime->time.minute = minute;
		oDateTime->time.second = second;
		if( iso8601FractionalStringTimeToTime( &(oDateTime->time), isoFractionalTime) == RSSL_RET_SUCCESS)
			return RSSL_RET_SUCCESS;
	}

	if (sscanf(iDateTimeString->data, "%4d-%2d-%2dT%2d:%2d:%2d,%9s", &a, &b, &c, &hour, &minute, &second, isoFractionalTime) == 7)
	{ /* Read ISO 8601 datetime format yyyy-mm-ddThh:mm:ss,nnnnnnnnn e.g 2017-08-12T23:20:50,550967845  Or digits < 9 after comma */
		oDateTime->date.day = c;
		oDateTime->date.month = b;
		oDateTime->date.year = a;
		oDateTime->time.hour = hour;
		oDateTime->time.minute = minute;
		oDateTime->time.second = second;
		if( iso8601FractionalStringTimeToTime( &(oDateTime->time), isoFractionalTime) == RSSL_RET_SUCCESS)
			return RSSL_RET_SUCCESS;

	}
	if (sscanf(iDateTimeString->data, "%4d-%2d-%2dT%2d:%2d:%2d", &a, &b, &c, &hour, &minute, &second ) == 6)
	{ /* Read ISO 8601 datetime format yyyy-mm-ddThh:mm:ss e.g. 2017-08-12T23:20:50*/
		oDateTime->date.day = c;
		oDateTime->date.month = b;
		oDateTime->date.year = a;
		oDateTime->time.hour = hour;
		oDateTime->time.minute = minute;
		oDateTime->time.second = second;
		return  RSSL_RET_SUCCESS;
	}
	if (sscanf(iDateTimeString->data, "%4d-%2d-%2dT%2d:%2d", &a, &b, &c, &hour, &minute) == 5)
	{ /* Read ISO 8601 datetime format yyyy-mm-ddThh:mm e.g. 2017-08-12T23:20*/
		oDateTime->date.day = c;
		oDateTime->date.month = b;
		oDateTime->date.year = a;
		oDateTime->time.hour = hour;
		oDateTime->time.minute = minute;
		return  RSSL_RET_SUCCESS;
	}
	if (sscanf(iDateTimeString->data, "%4d-%2d-%2dT%6s,%9s", &a, &b, &c, isoTime, isoFractionalTime) == 5)
	{ /* Read ISO 8601 datetime format yyyy-mm-ddThhmmss,nnnnnnnnn e.g. 2017-08-12T232050,932123456 Or digits < 9 after comma */
		oDateTime->date.day = c;
		oDateTime->date.month = b;
		oDateTime->date.year = a;
		if( strlen(isoTime) == 6 && iso8601TimeStringToTime( &(oDateTime->time), isoTime) == RSSL_RET_SUCCESS)
		{
			if( iso8601FractionalStringTimeToTime( &(oDateTime->time), isoFractionalTime) == RSSL_RET_SUCCESS)
				 return RSSL_RET_SUCCESS;
		}
	}
	if (sscanf(iDateTimeString->data, "%4d-%2d-%2dT%6s.%9s", &a, &b, &c, isoTime, isoFractionalTime) == 5)
	{ /* Read ISO 8601 datetime format yyyy-mm-ddThhmmss.nnnnnnnnn e.g. 2017-08-12T232050.932123456 Or digits < 9 after decimal*/
		oDateTime->date.day = c;
		oDateTime->date.month = b;
		oDateTime->date.year = a;
		if( strlen(isoTime) == 6 && iso8601TimeStringToTime( &(oDateTime->time), isoTime) == RSSL_RET_SUCCESS)
		{
			if( iso8601FractionalStringTimeToTime( &(oDateTime->time), isoFractionalTime) == RSSL_RET_SUCCESS)
				 return RSSL_RET_SUCCESS;
		}
	}
	if (sscanf(iDateTimeString->data, "%4d-%2d-%2dT%6s", &a, &b, &c, isoTime) == 4)
	{ /* Read ISO 8601 datetime format yyyy-mm-ddThhmm e.g. 2017-08-12T2320 Or yyyy-mm-ddThhmmss e.g. 2017-08-12T232015 */
		size_t tLen = strlen(isoTime);
		oDateTime->date.day = c;
		oDateTime->date.month = b;
		oDateTime->date.year = a;
		if( (tLen== 4 || tLen == 6)  &&  iso8601TimeStringToTime(&(oDateTime->time), isoTime) == RSSL_RET_SUCCESS)
			return  RSSL_RET_SUCCESS;
	}

	if (sscanf(iDateTimeString->data, "%8sT%6s,%9s", isoDate, isoTime, isoFractionalTime) == 3)
	{ /* Read ISO 8601 datetime format yyyymmddThhmmss,nnnnnnnnn e.g 20071119T083748,550967845 Or digits < 9 after comma*/
		if( iso8601DateStringToDate(&(oDateTime->date), isoDate) == RSSL_RET_SUCCESS )
		{
			if( strlen(isoTime) == 6 && iso8601TimeStringToTime( &(oDateTime->time), isoTime) == RSSL_RET_SUCCESS)
			{
				if( iso8601FractionalStringTimeToTime( &(oDateTime->time), isoFractionalTime) == RSSL_RET_SUCCESS)
					 return RSSL_RET_SUCCESS;
			}
		}
	}

	if (sscanf(iDateTimeString->data, "%8sT%6s.%9s", isoDate, isoTime, isoFractionalTime) == 3)
	{ /* Read ISO 8601 datetime format yyyymmddThhmmss.nnnnnnnnn e.g 20071119T083748.550967845 Or digits < 9 after decimal */
		if( iso8601DateStringToDate(&(oDateTime->date), isoDate) == RSSL_RET_SUCCESS )
		{
			if( strlen(isoTime) == 6 && iso8601TimeStringToTime( &(oDateTime->time), isoTime) == RSSL_RET_SUCCESS)
			{
				if( iso8601FractionalStringTimeToTime( &(oDateTime->time), isoFractionalTime) == RSSL_RET_SUCCESS)
					 return RSSL_RET_SUCCESS;
			}
		}
	}

	if (sscanf(iDateTimeString->data, "%8sT%6s", isoDate, isoTime) == 2)
	{ /* Read ISO 8601 datetime format yyyymmddThhmmss e.g 20071119T083748 Or  yyyymmddThhmm 20071119T0837 */
		if( iso8601DateStringToDate(&(oDateTime->date), isoDate) == RSSL_RET_SUCCESS )
		{
			size_t tLen = strlen(isoTime);
			if( (tLen== 4 || tLen == 6)  &&  iso8601TimeStringToTime(&(oDateTime->time), isoTime) == RSSL_RET_SUCCESS)
				return  RSSL_RET_SUCCESS;				
		}
	}

	if (sscanf(iDateTimeString->data, "%d/%d/%d %d:%d:%d:%d:%d:%d", &a, &b, &c, &hour, &minute, &second, &millisecond, &micro, & nano) >= 5)
	{
		// 1974/04/14
		//
		if (a > 255) // assume year here is greater than MAX UINT8
		{
			oDateTime->date.day = c;
			oDateTime->date.month = b;
			oDateTime->date.year = a;

			oDateTime->time.hour = hour;
			oDateTime->time.minute = minute;
			oDateTime->time.second = second;
			oDateTime->time.millisecond = millisecond;
			oDateTime->time.microsecond = micro;
			oDateTime->time.nanosecond = nano;
		}
		// 04/14/74
		//
		else if (c < 100) // assume year here is less than 100, then add 1900
		{
			oDateTime->date.day = b;
			oDateTime->date.month = a;
			oDateTime->date.year = c + 1900;

			oDateTime->time.hour = hour;
			oDateTime->time.minute = minute;
			oDateTime->time.second = second;
			oDateTime->time.millisecond = millisecond;
			oDateTime->time.microsecond = micro;
			oDateTime->time.nanosecond = nano;
		}
		// 04/14/1974
		//
		else
		{
			oDateTime->date.day = b;
			oDateTime->date.month = a;
			oDateTime->date.year = c;

			oDateTime->time.hour = hour;
			oDateTime->time.minute = minute;
			oDateTime->time.second = second;
			oDateTime->time.millisecond = millisecond;
			oDateTime->time.microsecond = micro;
			oDateTime->time.nanosecond = nano;
		}
		return RSSL_RET_SUCCESS;
	}	

	if (isdigit(iDateTimeString->data[3]))
	{
		if (sscanf(iDateTimeString->data, "%d %d %d %d %d %d %d %d %d", &a, &b, &c, &hour, &minute, &second, &millisecond, &micro, &nano) >= 5)
		{
			if (a > 255) // assume year here is greater than MAX UINT8
			{
				oDateTime->date.day = c;
				oDateTime->date.month = b;
				oDateTime->date.year = a;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			else if (c < 100) // assume year here is less than 100, then add 1900
			{
				oDateTime->date.day = b;
				oDateTime->date.month = a;
				oDateTime->date.year = c + 1900;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			else
			{
				oDateTime->date.day = b;
				oDateTime->date.month = a;
				oDateTime->date.year = c;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			return RSSL_RET_SUCCESS;
		}	
	}
	else if (isalpha(iDateTimeString->data[3]))
	{
		if (sscanf(iDateTimeString->data, "%d %3s %d %d %d %d %d %d %d", &a, monthStr, &c, &hour, &minute, &second, &millisecond, &micro, &nano) >= 5)
		{
			if (c < 100) // assume year here is less than 100, then add 1900
			{
				oDateTime->date.day = a;
				oDateTime->date.month = translateMonth(monthStr);
				oDateTime->date.year = c + 1900;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			else
			{
				oDateTime->date.day = a;
				oDateTime->date.month = translateMonth(monthStr);
				oDateTime->date.year = c;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			return RSSL_RET_SUCCESS;
		}
	}

	if (sscanf(iDateTimeString->data, "%d/%d/%d %d %d %d %d %d %d", &a, &b, &c, &hour, &minute, &second, &millisecond, &micro, &nano) >= 5)
	{
		// 1974/04/14
		//
		if (a > 255) // assume year here is greater than MAX UINT8
		{
			oDateTime->date.day = c;
			oDateTime->date.month = b;
			oDateTime->date.year = a;

			oDateTime->time.hour = hour;
			oDateTime->time.minute = minute;
			oDateTime->time.second = second;
			oDateTime->time.millisecond = millisecond;
			oDateTime->time.microsecond = micro;
			oDateTime->time.nanosecond = nano;
		}
		// 04/14/74
		//
		else if (c < 100) // assume year here is less than 100, then add 1900
		{
			oDateTime->date.day = b;
			oDateTime->date.month = a;
			oDateTime->date.year = c + 1900;

			oDateTime->time.hour = hour;
			oDateTime->time.minute = minute;
			oDateTime->time.second = second;
			oDateTime->time.millisecond = millisecond;
			oDateTime->time.microsecond = micro;
			oDateTime->time.nanosecond = nano;
		}
		// 04/14/1974
		//
		else
		{
			oDateTime->date.day = b;
			oDateTime->date.month = a;
			oDateTime->date.year = c;

			oDateTime->time.hour = hour;
			oDateTime->time.minute = minute;
			oDateTime->time.second = second;
			oDateTime->time.millisecond = millisecond;
			oDateTime->time.microsecond = micro;
			oDateTime->time.nanosecond = nano;
		}
		return RSSL_RET_SUCCESS;
	}	

	if (isdigit(iDateTimeString->data[3]))
	{
		if (sscanf(iDateTimeString->data, "%d %d %d %d:%d:%d:%d:%d:%d", &a, &b, &c, &hour, &minute, &second, &millisecond, &micro, &nano) >= 5)
		{
			if (a > 255) // assume year here is greater than MAX UINT8
			{
				oDateTime->date.day = c;
				oDateTime->date.month = b;
				oDateTime->date.year = a;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			else if (c < 100) // assume year here is less than 100, then add 1900
			{
				oDateTime->date.day = b;
				oDateTime->date.month = a;
				oDateTime->date.year = c + 1900;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			else
			{
				oDateTime->date.day = b;
				oDateTime->date.month = a;
				oDateTime->date.year = c;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			return RSSL_RET_SUCCESS;
		}	
	}
	else if (isalpha(iDateTimeString->data[3]))
	{
		if (sscanf(iDateTimeString->data, "%d %3s %d %d:%d:%d:%d:%d:%d", &a, monthStr, &c, &hour, &minute, &second, &millisecond, &micro, &nano) >= 5)
		{
			if (c < 100) // assume year here is less than 100, then add 1900
			{
				oDateTime->date.day = a;
				oDateTime->date.month = translateMonth(monthStr);
				oDateTime->date.year = c + 1900;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			else
			{
				oDateTime->date.day = a;
				oDateTime->date.month = translateMonth(monthStr);
				oDateTime->date.year = c;

				oDateTime->time.hour = hour;
				oDateTime->time.minute = minute;
				oDateTime->time.second = second;
				oDateTime->time.millisecond = millisecond;
				oDateTime->time.microsecond = micro;
				oDateTime->time.nanosecond = nano;
			}
			return RSSL_RET_SUCCESS;
		}
	}

	if (iDateTimeString->length > 0)
	{
		char* tmp = iDateTimeString->data;

		while (isspace(*tmp))
			tmp++; /* skip whitespace */
		
		/* if all whitespaces init to blank */
		if (tmp == iDateTimeString->data + iDateTimeString->length)
		{
			oDateTime->date.day = 0;
			oDateTime->date.month = 0;
			oDateTime->date.year = 0;

			oDateTime->time.hour = 255;
			oDateTime->time.minute = 255;
			oDateTime->time.second = 255;
			oDateTime->time.millisecond = 65535;
			oDateTime->time.microsecond = 2047;
			oDateTime->time.nanosecond = 2047;

			return RSSL_RET_BLANK_DATA;
		}

		if (rwf_stodatetime(oDateTime, iDateTimeString->data) < 0)
		{
			return RSSL_RET_INVALID_DATA;
		}
	}

	return RSSL_RET_SUCCESS;
}
Пример #4
0
void gettime() {
    read_rtc();
    translateHour();
    translateDay();
    translateMonth();
}
Пример #5
0
RSSL_API RsslRet rsslDateStringToDate(RsslDate * oDate, const RsslBuffer * iDateString)
{
	char * tmp;
	RsslUInt8 u8;
	RsslUInt16 u16;
	int a, b, c;
	char monthStr[32];
	char isoDate[9];

	if (iDateString->data == NULL || iDateString->length == 0)
	{
		oDate->day = 0;
		oDate->month = 0;
		oDate->year = 0;

		return RSSL_RET_BLANK_DATA;
	}

	if (sscanf(iDateString->data, "%4d-%2d-%2d", &a, &b, &c ) == 3)
	{ /* Read ISO 8601 datetime format yyyy-mm-dd e.g. 2017-08-12 */
		oDate->day = c;
		oDate->month = b;
		oDate->year = a;
		return RSSL_RET_SUCCESS;
	}
	if (sscanf(iDateString->data, "%4d-%2d", &a, &b ) == 2)
	{ /* Read ISO 8601 datetime format yyyy-mm e.g. 2017-08 */
		oDate->day = 0;
		oDate->month = b;
		oDate->year = a;
		return RSSL_RET_SUCCESS;
	}
	if (sscanf(iDateString->data, "--%2d-%2d", &b, &c ) == 2 || sscanf(iDateString->data, "--%2d%2d", &b, &c ) == 2)
	{ /* Read ISO 8601 datetime format --mm-dd e.g. --03-31 */
		oDate->year = 0;
		oDate->day = c;
		oDate->month = b;
		return RSSL_RET_SUCCESS;
	}
	if (sscanf(iDateString->data, "%8s", isoDate ) == 1)
	{ /* Read ISO 8601 datetime format yyyymmdd e.g. 20170812 */
		if( iso8601DateStringToDate(oDate, isoDate) == RSSL_RET_SUCCESS )
			return RSSL_RET_SUCCESS;
	}

	if (sscanf(iDateString->data, "%d/%d/%d", &a, &b, &c) == 3)
	{
		// 1974/04/14
		//
		if (a > 255) // assume year here is greater than MAX UINT8
		{
			oDate->day = c;
			oDate->month = b;
			oDate->year = a;
		}
		// 04/14/74
		//
		else if (c < 100) // assume year here is less than 100, then add 1900
		{
			oDate->day = b;
			oDate->month = a;
			oDate->year = c + 1900;
		}
		// 04/14/1974
		//
		else
		{
			oDate->day = b;
			oDate->month = a;
			oDate->year = c;
		}
		return RSSL_RET_SUCCESS;
	}	

	if (sscanf(iDateString->data, "%d%d%d", &a, &b, &c) == 3)
	{
		if (a > 255) // assume year here is greater than MAX UINT
		{
			oDate->day = c;
			oDate->month = b;
			oDate->year = a;
		}
		else if (c < 100) // assume year here is less than 100, then add 1900
		{
			oDate->day = b;
			oDate->month = a;
			oDate->year = c + 1900;
		}
		else
		{
			oDate->day = b;
			oDate->month = a;
			oDate->year = c;
		}
		return RSSL_RET_SUCCESS;
	}

	if (isdigit(iDateString->data[3]))
	{
		if (sscanf(iDateString->data, "%d %d %d", &a, &b, &c) == 3)
		{
			if (a > 255) // assume year here is greater than MAX UINT
			{
				oDate->day = c;
				oDate->month = b;
				oDate->year = a;
			}
			else if (c < 100) // assume year here is less than 100, then add 1900
			{
				oDate->day = b;
				oDate->month = a;
				oDate->year = c + 1900;
			}
			else
			{
				oDate->day = b;
				oDate->month = a;
				oDate->year = c;
			}
			return RSSL_RET_SUCCESS;
		}
	}
	else if (isalpha(iDateString->data[3]))
	{
		if (sscanf(iDateString->data, "%d %3s %d", &a, monthStr, &c) == 3)
		{
			if (c < 100) // assume year here is less than 100, then add 1900
			{
				oDate->day = a;
				oDate->month = translateMonth(monthStr);
				oDate->year = c + 1900;
			}
			else
			{
				oDate->day = a;
				oDate->month = translateMonth(monthStr);
				oDate->year = c;
			}
			return RSSL_RET_SUCCESS;
		}
	}

	if (iDateString->length > 0)
	{
		tmp = iDateString->data;
		for (u8 = 0; isdigit(*tmp); tmp++)
			u8 = u8 * 10 + (*tmp - '0');
		oDate->day = u8;

		while (isspace(*tmp))
			tmp++; /* skip whitespace */
		
		if (tmp == iDateString->data + iDateString->length)
		{
			oDate->day = 0;
			oDate->month = 0;
			oDate->year = 0;

			return RSSL_RET_BLANK_DATA;
		}

		for (u8 = 1; u8 <= 12 && strncmp(months[u8-1], tmp, 3) ; u8++);
		if (u8 > 12)
        {
			return RSSL_RET_INVALID_DATA;
        }
		else
			oDate->month = u8;
		tmp += 3;

		tmp++; /* skip whitespace */

		for (u16 = 0; isdigit(*tmp); tmp++)
			u16 = u16 * 10 + (*tmp - '0');
		oDate->year = u16;
	}
	else
	{
		oDate->day = 0;
		oDate->month = 0;
		oDate->year = 0;

		return RSSL_RET_BLANK_DATA;
	}

	return RSSL_RET_SUCCESS;
}