From f0d75eea0d9a7311c43d16c3bdff2a6de1da4e96 Mon Sep 17 00:00:00 2001
From: tamasmeszaros <meszaros.q@gmail.com>
Date: Mon, 7 Oct 2019 08:56:54 +0200
Subject: [PATCH] Fix incorrect time format spec in iso_utc_timestamp.

Also add test for such errors in the future.
---
 src/libslic3r/Time.hpp                   |  2 +-
 tests/timeutils/timeutils_tests_main.cpp | 23 ++++++++++++++++++-----
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/libslic3r/Time.hpp b/src/libslic3r/Time.hpp
index 6b3fd1525..c03251986 100644
--- a/src/libslic3r/Time.hpp
+++ b/src/libslic3r/Time.hpp
@@ -46,7 +46,7 @@ time_t str2time(const std::string &str, TimeZone zone, TimeFormat fmt);
 
 inline std::string iso_utc_timestamp(time_t t)
 {
-    return time2str(t, TimeZone::utc, TimeFormat::gcode);
+    return time2str(t, TimeZone::utc, TimeFormat::iso8601Z);
 }
 
 inline std::string iso_utc_timestamp()
diff --git a/tests/timeutils/timeutils_tests_main.cpp b/tests/timeutils/timeutils_tests_main.cpp
index 191ec6a86..c3827374e 100644
--- a/tests/timeutils/timeutils_tests_main.cpp
+++ b/tests/timeutils/timeutils_tests_main.cpp
@@ -12,18 +12,18 @@ namespace {
 void test_time_fmt(Slic3r::Utils::TimeFormat fmt) {
     using namespace Slic3r::Utils;
     time_t t = get_current_time_utc();
-    
+
     std::string tstr = time2str(t, TimeZone::local, fmt);
     time_t parsedtime = str2time(tstr, TimeZone::local, fmt);
     REQUIRE(t == parsedtime);
-    
+
     tstr = time2str(t, TimeZone::utc, fmt);
     parsedtime = str2time(tstr, TimeZone::utc, fmt);
     REQUIRE(t == parsedtime);
-    
+
     parsedtime = str2time("not valid string", TimeZone::local, fmt);
     REQUIRE(parsedtime == time_t(-1));
-    
+
     parsedtime = str2time("not valid string", TimeZone::utc, fmt);
     REQUIRE(parsedtime == time_t(-1));
 }
@@ -31,8 +31,21 @@ void test_time_fmt(Slic3r::Utils::TimeFormat fmt) {
 
 TEST_CASE("ISO8601Z", "[Timeutils]") {
     test_time_fmt(Slic3r::Utils::TimeFormat::iso8601Z);
+
+    std::string mydate = "20190710T085000Z";
+    time_t t = Slic3r::Utils::parse_iso_utc_timestamp(mydate);
+    std::string date = Slic3r::Utils::iso_utc_timestamp(t);
+
+    REQUIRE(date == mydate);
 }
 
 TEST_CASE("Slic3r_UTC_Time_Format", "[Timeutils]") {
-    test_time_fmt(Slic3r::Utils::TimeFormat::gcode);
+    using namespace Slic3r::Utils;
+    test_time_fmt(TimeFormat::gcode);
+
+    std::string mydate = "2019-07-10 at 08:50:00 UTC";
+    time_t t = Slic3r::Utils::str2time(mydate, TimeZone::utc, TimeFormat::gcode);
+    std::string date = Slic3r::Utils::utc_timestamp(t);
+
+    REQUIRE(date == mydate);
 }