Replying to myself
Here's what I've come with:
/***************************************************************************
* Copyright (C) 2009 by Pedro Doria Meunier *
* pdoria@netmadeira.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
***************************************************************************/
#include <QCoreApplication>
#include <QDateTime>
#include <stdlib.h>
#include <iostream>
// helper functions
int main(int argc, char *argv[])
{
diffStr = getTimezoneDiff( localDate );
printf ("Local Date: %s\r\n", localDate.toString().toLatin1().data() );
//printf ("UTC Date: %s\r\n", utcTime.toLatin1().data() );
printf ("Offset : %s\r\n", diffStr.toLatin1().data() );
return 0;
}
/**
* QString getTimezoneDiff( QDateTime dt )
* @param dt well formated date time (YYYY-MM-DD hh:mm:ss)
* @return tzDiff (<+->hhmm)
*
* Purpose: return a timezone offset string to feed to PostgreSQL
*/
QString localdt
= dt.
toString ( "hhmm" );
// get the local time part from the @param QString utcDT
= dt.
toUTC().
toString ( "hhmm" );
// get the UTC time part from the @param QString tzDiff;
// this will hold the returned timezone diff. qint8 hhmmdt = localdt.toInt();
qint8 hhmmUTC= utcDT.toInt();
qint8 offset = hhmmdt - hhmmUTC;
// is it a positive offset?
if (offset>=0) {
tzDiff = "+" + tzDiff.setNum(offset);;
}
else
tzDiff.setNum(offset);
return tzDiff;
}
/***************************************************************************
* Copyright (C) 2009 by Pedro Doria Meunier *
* pdoria@netmadeira.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
***************************************************************************/
#include <QCoreApplication>
#include <QDateTime>
#include <stdlib.h>
#include <iostream>
// helper functions
QString getTimezoneDiff( QDateTime dt );
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QDateTime localDate = QDateTime::fromString("2009-07-11 16:53:00","yyyy-MM-dd hh:mm:ss");
QString diffStr;
diffStr = getTimezoneDiff( localDate );
printf ("Local Date: %s\r\n", localDate.toString().toLatin1().data() );
//printf ("UTC Date: %s\r\n", utcTime.toLatin1().data() );
printf ("Offset : %s\r\n", diffStr.toLatin1().data() );
return 0;
}
/**
* QString getTimezoneDiff( QDateTime dt )
* @param dt well formated date time (YYYY-MM-DD hh:mm:ss)
* @return tzDiff (<+->hhmm)
*
* Purpose: return a timezone offset string to feed to PostgreSQL
*/
QString getTimezoneDiff( QDateTime dt ) {
QString localdt = dt.toString ( "hhmm" ); // get the local time part from the @param
QString utcDT = dt.toUTC().toString ( "hhmm" ); // get the UTC time part from the @param
QString tzDiff; // this will hold the returned timezone diff.
qint8 hhmmdt = localdt.toInt();
qint8 hhmmUTC= utcDT.toInt();
qint8 offset = hhmmdt - hhmmUTC;
// is it a positive offset?
if (offset>=0) {
tzDiff = "+" + tzDiff.setNum(offset);;
}
else
tzDiff.setNum(offset);
return tzDiff;
}
To copy to clipboard, switch view to plain text mode
If there's (I'm sure there is! ) a more elegant solution I'd love to see it!
BR,
Pedro Doria Meunier
Bookmarks