Skip to content

Commit ffa685d

Browse files
wForgetmeta-codesync[bot]
authored andcommitted
fix: Correct dayOfWeek letter for SimpleDateTimeFormatter (facebookincubator#15517)
Summary: In Velox, `e` was incorrectly used as the `dayOfWeek` letter in `SimpleDateTimeFormatter`. https://github.com/facebookincubator/velox/blob/974e77c1271369755f89825a120c2a1265bf879e/velox/functions/lib/DateTimeFormatter.cpp#L2023-L2025 This PR fixes this by using the letter `u` to be consistent with Java. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html Closes facebookincubator#15516. Pull Request resolved: facebookincubator#15517 Reviewed By: kKPulla Differential Revision: D87597881 Pulled By: kagamiori fbshipit-source-id: fa12bc406d96523abdb20e7e268d94b4af38155e
1 parent 267ad70 commit ffa685d

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

velox/functions/lib/DateTimeFormatter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2020,7 +2020,7 @@ Expected<std::shared_ptr<DateTimeFormatter>> buildSimpleDateTimeFormatter(
20202020
case 'D':
20212021
builder.appendDayOfYear(count);
20222022
break;
2023-
case 'e':
2023+
case 'u':
20242024
builder.appendDayOfWeek1Based(count);
20252025
break;
20262026
case 'E':

velox/functions/lib/tests/DateTimeFormatterTest.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2368,16 +2368,16 @@ TEST_F(SimpleDateTimeFormatterTest, parseSimpleWeekOfMonth) {
23682368
// Format contains year, month, weekOfMonth and dayOfWeek.
23692369
EXPECT_EQ(
23702370
fromTimestampString("2024-08-02"),
2371-
parseSimple("2024 08 01 5", "yyyy MM WW e", lenient).timestamp);
2371+
parseSimple("2024 08 01 5", "yyyy MM WW u", lenient).timestamp);
23722372
EXPECT_EQ(
23732373
fromTimestampString("2024-08-03"),
2374-
parseSimple("2024 08 01 6", "yyyy MM WW e", lenient).timestamp);
2374+
parseSimple("2024 08 01 6", "yyyy MM WW u", lenient).timestamp);
23752375
EXPECT_EQ(
23762376
fromTimestampString("2024-08-09"),
2377-
parseSimple("2024 08 02 5", "yyyy MM WW e", lenient).timestamp);
2377+
parseSimple("2024 08 02 5", "yyyy MM WW u", lenient).timestamp);
23782378
EXPECT_EQ(
23792379
fromTimestampString("2024-08-12"),
2380-
parseSimple("2024 08 03 1", "yyyy MM WW e", lenient).timestamp);
2380+
parseSimple("2024 08 03 1", "yyyy MM WW u", lenient).timestamp);
23812381

23822382
// Format contains year, month and weekOfMonth.
23832383
EXPECT_EQ(
@@ -2398,25 +2398,25 @@ TEST_F(SimpleDateTimeFormatterTest, parseSimpleWeekOfMonth) {
23982398
// Field out of range for lenient mode.
23992399
EXPECT_EQ(
24002400
fromTimestampString("2024-09-30"),
2401-
parseSimple("2024 08 10 1", "yyyy MM WW e", true).timestamp);
2401+
parseSimple("2024 08 10 1", "yyyy MM WW u", true).timestamp);
24022402
EXPECT_EQ(
24032403
fromTimestampString("2024-07-28"),
24042404
parseSimple("2024 08 01", "yyyy MM WW", true).timestamp);
24052405
EXPECT_EQ(
24062406
fromTimestampString("2025-02-24"),
2407-
parseSimple("2024 15 01 1", "yyyy MM WW e", true).timestamp);
2407+
parseSimple("2024 15 01 1", "yyyy MM WW u", true).timestamp);
24082408
EXPECT_EQ(
24092409
fromTimestampString("2024-07-29"),
2410-
parseSimple("2024 08 01 9", "yyyy MM WW e", true).timestamp);
2410+
parseSimple("2024 08 01 9", "yyyy MM WW u", true).timestamp);
24112411

24122412
// Field out of range for strict mode.
24132413
EXPECT_THROW(
2414-
parseSimple("2024 08 10 1", "yyyy MM WW e", false), VeloxUserError);
2414+
parseSimple("2024 08 10 1", "yyyy MM WW u", false), VeloxUserError);
24152415
EXPECT_THROW(parseSimple("2024 08 10", "yyyy MM WW", false), VeloxUserError);
24162416
EXPECT_THROW(
2417-
parseSimple("2024 15 01 1", "yyyy MM WW e", false), VeloxUserError);
2417+
parseSimple("2024 15 01 1", "yyyy MM WW u", false), VeloxUserError);
24182418
EXPECT_THROW(
2419-
parseSimple("2024 08 01 9", "yyyy MM WW e", false), VeloxUserError);
2419+
parseSimple("2024 08 01 9", "yyyy MM WW u", false), VeloxUserError);
24202420
}
24212421

24222422
TEST_F(SimpleDateTimeFormatterTest, formatResultSize) {

0 commit comments

Comments
 (0)