2021-12-22 Fred Gleason <fredg@paravelsystems.com>

* Added '%z', '%:z' and '%::z' patterns to the set of filepath
	wildcards.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2021-12-22 19:55:59 -05:00
parent fbfc7e07a9
commit ba5fe96b46
4 changed files with 96 additions and 6 deletions

View File

@@ -101,7 +101,6 @@ QDateTime RDLocalToUtc(const QDateTime &localdatetime);
QTime RDLocalToUtc(const QTime &localtime);
QDateTime RDUtcToLocal(const QDateTime &gmtdatetime);
QTime RDUtcToLocal(const QTime &gmttime);
//int RDTimeZoneOffset();
QColor RDGetTextColor(const QColor &background_color);
bool RDProcessActive(const QString &cmd);
bool RDProcessActive(const QStringList &cmds);

View File

@@ -20,7 +20,44 @@
#include <stdio.h>
#include <rddatedecode.h>
#include "rdconf.h"
#include "rddatedecode.h"
#include "rddatetime.h"
QString __RDDateCode_TZFormat(int level)
{
int offset=RDTimeZoneOffset();
int hours=abs(offset/3600);
int minutes=(abs(offset)-3600*hours)/60;
int seconds=abs(offset)-3600*hours-60*minutes;
QString ret;
switch(level) {
case 0:
ret=QString::asprintf("%02d",hours).left(2)+
QString::asprintf("%02d",minutes).left(2);
break;
case 1:
ret=QString::asprintf("%02d",hours).left(2)+":"+
QString::asprintf("%02d",minutes).left(2);
break;
case 2:
ret=QString::asprintf("%02d",hours).left(2)+":"+
QString::asprintf("%02d",minutes).left(2)+":"+
QString::asprintf("%02d",seconds).left(2);
break;
}
if(offset<0) {
ret="+"+ret;
}
else {
ret="-"+ret;
}
return ret;
}
QString RDDateDecode(QString str,const QDate &date,RDStation *station,
RDConfig *config,const QString &svcname)
@@ -453,6 +490,24 @@ QString RDDateTimeDecode(QString str,const QDateTime &datetime,
field=QString::asprintf("%04d",dt.date().year());
break;
case 'z': // +hhmm numeric time zone (e.g., -0400)
field=__RDDateCode_TZFormat(0);
break;
case ':': // Extended numeric timezones
if((str.length()>(i+1))&&(str.at(i+1)==QChar('z'))) {
field=__RDDateCode_TZFormat(1);
i++;
}
else {
if((str.length()>(i+2))&&(str.at(i+1)==QChar(':'))&&
(str.at(i+2)==QChar('z'))) {
field=__RDDateCode_TZFormat(2);
i+=2;
}
}
break;
case '%': // Literal '%'
field=QString("%");
break;