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

@ -22835,3 +22835,6 @@
* Add missing files to EXTRA_DIST in versions. * Add missing files to EXTRA_DIST in versions.
2021-12-22 Fred Gleason <fredg@paravelsystems.com> 2021-12-22 Fred Gleason <fredg@paravelsystems.com>
* Added the ability to filter the library by two scheduler codes. * Added the ability to filter the library by two scheduler codes.
2021-12-22 Fred Gleason <fredg@paravelsystems.com>
* Added '%z', '%:z' and '%::z' patterns to the set of filepath
wildcards.

View File

@ -1,8 +1,8 @@
<appendix xmlns="http://docbook.org/ns/docbook" xml:id="appendix.filepath_wildcards"> <appendix xmlns="http://docbook.org/ns/docbook" xml:id="appendix.filepath_wildcards">
<title>Filepath Wildcards</title> <title>Filepath Wildcards</title>
<para> <para>
Filepath wildcards can be used in most places in RDAdmin where a filename Filepath wildcards can be used in most places in RDAdmin and RDCatch
is required. where a filename or URL is required.
</para> </para>
<sect1 xml:id="sect.filepath_wildcards.definition"> <sect1 xml:id="sect.filepath_wildcards.definition">
<title>Definition</title> <title>Definition</title>
@ -473,7 +473,23 @@
<term><userinput>z</userinput></term> <term><userinput>z</userinput></term>
<listitem> <listitem>
<para> <para>
[unassigned] -HHMM numeric timezone (e.g. -0400)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>:z</userinput></term>
<listitem>
<para>
-HH:MM numeric timezone (e.g. -04:00)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>::z</userinput></term>
<listitem>
<para>
-HH:MM:SS numeric timezone (e.g. -04:00:00)
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -501,7 +517,8 @@
<sect1 xml:id="sect.filepath_wildcards.examples"> <sect1 xml:id="sect.filepath_wildcards.examples">
<title>Examples</title> <title>Examples</title>
<para> <para>
For the date time of February 3rd, 2017 at 2:34:26 PM: For the date time of February 3rd, 2017 at 2:34:26 PM, in the
<code>America/New_York</code> timezone:
</para> </para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
@ -640,6 +657,22 @@
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><userinput>%Y-%m-%dT%H:%M:%S</userinput></term>
<listitem>
<para>
<code>2017-02-03T14:34:26</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%Y-%m-%dT%H:%M:%S%:z</userinput></term>
<listitem>
<para>
<code>2017-02-03T14:34:26-05:00</code>
</para>
</listitem>
</varlistentry>
</variablelist> </variablelist>
</sect1> </sect1>
</appendix> </appendix>

View File

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

View File

@ -20,7 +20,44 @@
#include <stdio.h> #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, QString RDDateDecode(QString str,const QDate &date,RDStation *station,
RDConfig *config,const QString &svcname) RDConfig *config,const QString &svcname)
@ -453,6 +490,24 @@ QString RDDateTimeDecode(QString str,const QDateTime &datetime,
field=QString::asprintf("%04d",dt.date().year()); field=QString::asprintf("%04d",dt.date().year());
break; 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 '%' case '%': // Literal '%'
field=QString("%"); field=QString("%");
break; break;