summaryrefslogtreecommitdiff
path: root/src/mongo/db/query
diff options
context:
space:
mode:
authorJennifer Peshansky <jennifer.peshansky@mongodb.com>2023-01-27 18:06:18 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-01-27 19:27:38 +0000
commit33190227bdd2c21328afe7f41ace33bf5d64eeab (patch)
treea533555859a2fc901ba5cd51aee1a74db258bd3d /src/mongo/db/query
parent9c7c82b40b7493cb63f971429e04cfb419c62b93 (diff)
downloadmongo-33190227bdd2c21328afe7f41ace33bf5d64eeab.tar.gz
SERVER-50336 Add %j format specifier to dateToString
Diffstat (limited to 'src/mongo/db/query')
-rw-r--r--src/mongo/db/query/datetime/date_time_support.cpp1
-rw-r--r--src/mongo/db/query/datetime/date_time_support_test.cpp11
2 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/db/query/datetime/date_time_support.cpp b/src/mongo/db/query/datetime/date_time_support.cpp
index c0ca46d5dbb..14a20c170fd 100644
--- a/src/mongo/db/query/datetime/date_time_support.cpp
+++ b/src/mongo/db/query/datetime/date_time_support.cpp
@@ -81,6 +81,7 @@ const std::vector<timelib_format_specifier> kDateFromStringFormatMap = {
{'d', TIMELIB_FORMAT_DAY_TWO_DIGIT},
{'G', TIMELIB_FORMAT_YEAR_ISO},
{'H', TIMELIB_FORMAT_HOUR_TWO_DIGIT_24_MAX},
+ {'j', TIMELIB_FORMAT_DAY_OF_YEAR},
{'L', TIMELIB_FORMAT_MILLISECOND_THREE_DIGIT},
{'m', TIMELIB_FORMAT_MONTH_TWO_DIGIT},
{'M', TIMELIB_FORMAT_MINUTE_TWO_DIGIT},
diff --git a/src/mongo/db/query/datetime/date_time_support_test.cpp b/src/mongo/db/query/datetime/date_time_support_test.cpp
index 57a1c3ba42e..ddb6cebb3f0 100644
--- a/src/mongo/db/query/datetime/date_time_support_test.cpp
+++ b/src/mongo/db/query/datetime/date_time_support_test.cpp
@@ -1036,6 +1036,17 @@ TEST(DateFromString, CorrectlyParsesStringThatMatchesFormat) {
ASSERT_EQ(input, result.getValue());
}
+TEST(DateFromString, CorrectlyParsesStringWithDayFromYearFormat) {
+ auto input = "2017-302";
+ auto expected = "2017, Day 303";
+ auto inputFormat = "%Y-%j"_sd;
+ auto outputFormat = "%Y, Day %j"_sd;
+ auto date = kDefaultTimeZoneDatabase.fromString(input, kDefaultTimeZone, inputFormat);
+ auto result = TimeZoneDatabase::utcZone().formatDate(outputFormat, date);
+ ASSERT_OK(result);
+ ASSERT_EQ(expected, result.getValue());
+}
+
TEST(DateFromString, RejectsStringWithInvalidYearFormat) {
ASSERT_THROWS_CODE(kDefaultTimeZoneDatabase.fromString("201", kDefaultTimeZone, "%Y"_sd),
AssertionException,