diff options
-rw-r--r-- | desktop-widgets/divelogimportdialog.cpp | 6 | ||||
-rw-r--r-- | xslt/csv2xml.xslt | 41 |
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))"/> |