summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--desktop-widgets/divelogimportdialog.cpp6
-rw-r--r--xslt/csv2xml.xslt41
2 files changed, 41 insertions, 6 deletions
diff --git a/desktop-widgets/divelogimportdialog.cpp b/desktop-widgets/divelogimportdialog.cpp
index a1ecf15b8..854a522f2 100644
--- a/desktop-widgets/divelogimportdialog.cpp
+++ b/desktop-widgets/divelogimportdialog.cpp
@@ -720,6 +720,8 @@ int DiveLogImportDialog::setup_csv_params(QStringList r, char **params, int pnr)
{
params[pnr++] = strdup("dateField");
params[pnr++] = intdup(r.indexOf(tr("Date")));
+ params[pnr++] = strdup("datefmt");
+ params[pnr++] = intdup(ui->DateFormat->currentIndex());
params[pnr++] = strdup("timeField");
params[pnr++] = intdup(r.indexOf(tr("Sample time")));
params[pnr++] = strdup("depthField");
@@ -821,7 +823,7 @@ void DiveLogImportDialog::on_buttonBox_accepted()
sample->tts.seconds *= 60;
}
} else {
- char *params[41];
+ char *params[43];
int pnr = 0;
pnr = setup_csv_params(r, params, pnr);
@@ -888,7 +890,7 @@ void DiveLogImportDialog::on_buttonBox_accepted()
parse_manual_file(fileNames[i].toUtf8().data(), params, pnr - 1);
} else {
- char *params[41];
+ char *params[43];
int pnr = 0;
pnr = setup_csv_params(r, params, pnr);
diff --git a/xslt/csv2xml.xslt b/xslt/csv2xml.xslt
index 7dc4fa4be..5c97b7aee 100644
--- a/xslt/csv2xml.xslt
+++ b/xslt/csv2xml.xslt
@@ -3,6 +3,7 @@
<xsl:include href="commonTemplates.xsl"/>
<xsl:strip-space elements="*"/>
<xsl:param name="dateField" select="dateField"/>
+ <xsl:param name="datefmt" select="datefmt"/>
<xsl:param name="timeField" select="timeField"/>
<xsl:param name="depthField" select="depthField"/>
<xsl:param name="tempField" select="tempField"/>
@@ -43,10 +44,42 @@
<xsl:attribute name="date">
<xsl:choose>
<xsl:when test="$dateField >= 0">
- <xsl:call-template name="getFieldByIndex">
- <xsl:with-param name="index" select="$dateField"/>
- <xsl:with-param name="line" select="substring-after(substring-after(., $lf), $lf)"/>
- </xsl:call-template>
+ <xsl:variable name="indate">
+ <xsl:call-template name="getFieldByIndex">
+ <xsl:with-param name="index" select="$dateField"/>
+ <xsl:with-param name="line" select="substring-after(substring-after(., $lf), $lf)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="separator">
+ <xsl:choose>
+ <xsl:when test="substring-before($indate, '.') != ''">
+ <xsl:value-of select="'.'"/>
+ </xsl:when>
+ <xsl:when test="substring-before($indate, '-') != ''">
+ <xsl:value-of select="'-'"/>
+ </xsl:when>
+ <xsl:when test="substring-before($indate, '/') != ''">
+ <xsl:value-of select="'/'"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- dd.mm.yyyy -->
+ <xsl:when test="$datefmt = 0">
+ <xsl:value-of select="translate(concat(substring-after(substring-after($indate, $separator), $separator), '-', substring-before(substring-after($indate, $separator), $separator), '-', substring-before($indate, $separator)), ' ', '')"/>
+ </xsl:when>
+ <!-- mm.yy.yyyy -->
+ <xsl:when test="$datefmt = 1">
+ <xsl:value-of select="translate(concat(substring-after(substring-after($indate, $separator), $separator), '-', substring-before($indate, $separator), '-', substring-before(substring-after($indate, $separator), $separator)), ' ', '')"/>
+ </xsl:when>
+ <!-- yyyy.mm.dd -->
+ <xsl:when test="$datefmt = 2">
+ <xsl:value-of select="translate(concat(substring-before($indate, $separator), '-', substring-before(substring-after($indate, $separator), $separator), '-', substring-after(substring-after($indate, $separator), $separator)), ' ', '')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'1900-1-1'"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(substring($date, 1, 4), '-', substring($date, 5, 2), '-', substring($date, 7, 2))"/>