Switched the file added info back to a full date time, ref #601
This commit is contained in:
@@ -466,14 +466,24 @@ namespace lms::core::stringUtils
|
||||
|
||||
std::string toISO8601String(const Wt::WDateTime& dateTime)
|
||||
{
|
||||
// assume UTC
|
||||
return dateTime.toString("yyyy-MM-ddThh:mm:ss.zzz", false).toUTF8();
|
||||
if (dateTime.isValid())
|
||||
{
|
||||
// assume UTC
|
||||
return dateTime.toString("yyyy-MM-ddThh:mm:ss.zzz", false).toUTF8();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string toISO8601String(const Wt::WDate& date)
|
||||
{
|
||||
// assume UTC
|
||||
return date.toString("yyyy-MM-dd").toUTF8();
|
||||
if (date.isValid())
|
||||
{
|
||||
// assume UTC
|
||||
return date.toString("yyyy-MM-dd").toUTF8();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
Wt::WDateTime fromISO8601String(std::string_view dateTime)
|
||||
|
||||
@@ -43,11 +43,26 @@ namespace lms::core
|
||||
static PartialDateTime fromWtDateTime(const Wt::WDateTime& dateTime);
|
||||
std::string toISO8601String() const;
|
||||
|
||||
bool isValid() const { return _precision != Precision::Invalid; }
|
||||
constexpr bool isValid() const { return _precision != Precision::Invalid; }
|
||||
|
||||
enum class Precision : std::uint8_t
|
||||
{
|
||||
Invalid,
|
||||
Year,
|
||||
Month,
|
||||
Day,
|
||||
Hour,
|
||||
Min,
|
||||
Sec,
|
||||
};
|
||||
constexpr Precision getPrecision() const { return _precision; }
|
||||
|
||||
constexpr std::optional<int> getYear() const { return (_precision >= Precision::Year ? std::make_optional(_year) : std::nullopt); }
|
||||
constexpr std::optional<int> getMonth() const { return (_precision >= Precision::Month ? std::make_optional(_month) : std::nullopt); }
|
||||
constexpr std::optional<int> getDay() const { return (_precision >= Precision::Day ? std::make_optional(_day) : std::nullopt); }
|
||||
constexpr std::optional<int> getHour() const { return (_precision >= Precision::Hour ? std::make_optional(_hour) : std::nullopt); }
|
||||
constexpr std::optional<int> getMin() const { return (_precision >= Precision::Min ? std::make_optional(_min) : std::nullopt); }
|
||||
constexpr std::optional<int> getSec() const { return (_precision >= Precision::Sec ? std::make_optional(_sec) : std::nullopt); }
|
||||
|
||||
constexpr auto operator<=>(const PartialDateTime& other) const = default;
|
||||
|
||||
@@ -60,16 +75,6 @@ namespace lms::core
|
||||
std::uint8_t _hour{}; // 0 to 23
|
||||
std::uint8_t _min{}; // 0 to 59
|
||||
std::uint8_t _sec{}; // 0 to 59
|
||||
enum class Precision : std::uint8_t
|
||||
{
|
||||
Invalid,
|
||||
Year,
|
||||
Month,
|
||||
Day,
|
||||
Hour,
|
||||
Min,
|
||||
Sec,
|
||||
};
|
||||
Precision _precision{ Precision::Invalid };
|
||||
};
|
||||
} // namespace lms::core
|
||||
@@ -301,14 +301,33 @@ namespace lms::core::stringUtils::tests
|
||||
|
||||
TEST(Stringutils, DateToString)
|
||||
{
|
||||
const Wt::WDate date{ 2020, 01, 03 };
|
||||
EXPECT_EQ(toISO8601String(date), "2020-01-03");
|
||||
{
|
||||
const Wt::WDate date{ 2020, 01, 03 };
|
||||
EXPECT_EQ(toISO8601String(date), "2020-01-03");
|
||||
}
|
||||
|
||||
{
|
||||
const Wt::WDate date;
|
||||
EXPECT_EQ(toISO8601String(date), "");
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Stringutils, DateTimeToString)
|
||||
{
|
||||
const Wt::WDateTime dateTime{ Wt::WDate{ 2020, 01, 03 }, Wt::WTime{ 9, 8, 11, 75 } };
|
||||
EXPECT_EQ(toISO8601String(dateTime), "2020-01-03T09:08:11.075");
|
||||
{
|
||||
const Wt::WDateTime dateTime{ Wt::WDate{ 2020, 01, 03 }, Wt::WTime{ 9, 8, 11, 75 } };
|
||||
EXPECT_EQ(toISO8601String(dateTime), "2020-01-03T09:08:11.075");
|
||||
}
|
||||
|
||||
{
|
||||
const Wt::WDateTime dateTime{ Wt::WDate{ 2020, 01, 03 } };
|
||||
EXPECT_EQ(toISO8601String(dateTime), "2020-01-03T00:00:00.000");
|
||||
}
|
||||
|
||||
{
|
||||
const Wt::WDateTime dateTime;
|
||||
EXPECT_EQ(toISO8601String(dateTime), "");
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Stringutils, DateTimeFromString)
|
||||
|
||||
Reference in New Issue
Block a user