Skip to content

Commit ad99dd4

Browse files
Set zone variant for unknown zones (#5695)
This should not be a missing field error.
1 parent f99af85 commit ad99dd4

File tree

3 files changed

+25
-37
lines changed

3 files changed

+25
-37
lines changed

components/datetime/tests/fixtures/tests/components_with_zones.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
},
2424
"output": {
2525
"values": {
26-
"en": "Tuesday, January 21, 2020, 08:25:07 {v}"
26+
"en": "Tuesday, January 21, 2020, 08:25:07 Unknown City Time"
2727
}
2828
}
2929
},
@@ -51,7 +51,7 @@
5151
},
5252
"output": {
5353
"values": {
54-
"en": "Tuesday, January 21, 2020, 08:25:07 {v}"
54+
"en": "Tuesday, January 21, 2020, 08:25:07 Unknown City Time"
5555
}
5656
}
5757
},
@@ -79,7 +79,7 @@
7979
},
8080
"output": {
8181
"values": {
82-
"en": "Tuesday, January 21, 2020, 08:25:07 {z}"
82+
"en": "Tuesday, January 21, 2020, 08:25:07 GMT+5"
8383
}
8484
}
8585
},
@@ -107,7 +107,7 @@
107107
},
108108
"output": {
109109
"values": {
110-
"en": "Tuesday, January 21, 2020, 08:25:07 {z}"
110+
"en": "Tuesday, January 21, 2020, 08:25:07 GMT+5"
111111
}
112112
}
113113
},

components/datetime/tests/patterns/tests/time_zones.json

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -986,13 +986,7 @@
986986
"patterns": [
987987
"z",
988988
"zz",
989-
"zzz"
990-
],
991-
"configs": [],
992-
"expected": ["{z}"]
993-
},
994-
{
995-
"patterns": [
989+
"zzz",
996990
"O"
997991
],
998992
"configs": [],
@@ -1001,6 +995,7 @@
1001995
{
1002996
"patterns": [
1003997
"OOOO",
998+
"zzzz",
1004999
"ZZZZ"
10051000
],
10061001
"configs": [],
@@ -1042,13 +1037,6 @@
10421037
"z",
10431038
"zz",
10441039
"zzz",
1045-
"zzzz"
1046-
],
1047-
"configs": [],
1048-
"expected": ["{z}"]
1049-
},
1050-
{
1051-
"patterns": [
10521040
"O"
10531041
],
10541042
"configs": [],
@@ -1057,6 +1045,7 @@
10571045
{
10581046
"patterns": [
10591047
"ZZZZ",
1048+
"zzzz",
10601049
"OOOO"
10611050
],
10621051
"configs": [],
@@ -1081,13 +1070,7 @@
10811070
{
10821071
"patterns": [
10831072
"v",
1084-
"vvvv"
1085-
],
1086-
"configs": [],
1087-
"expected": ["{v}"]
1088-
},
1089-
{
1090-
"patterns": [
1073+
"vvvv",
10911074
"VVVV"
10921075
],
10931076
"configs": [],

components/timezone/src/ixdtf.rs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ impl TimeZoneInfo {
116116
Ok(Self {
117117
time_zone_id: crate::TimeZoneBcp47Id::unknown(),
118118
offset: Some(UtcOffset::try_from_utc_offset_record(record)?),
119-
zone_variant: None,
120-
local_time: None,
119+
zone_variant: Some(ZoneVariant::standard()),
120+
local_time: Some((Date::unix_epoch(), Time::midnight())),
121121
})
122122
}
123123

@@ -144,17 +144,22 @@ impl TimeZoneInfo {
144144
time.second,
145145
)?;
146146
if let Some(offset) = offset {
147-
if let Some((std_offset, dst_offset)) = ZoneOffsetCalculator::new()
148-
.compute_offsets_from_time_zone(time_zone_id, &iso)
149-
{
150-
zone_variant = if offset == std_offset {
151-
Some(ZoneVariant::standard())
152-
} else if Some(offset) == dst_offset {
153-
Some(ZoneVariant::daylight())
147+
zone_variant = Some(
148+
if let Some((std_offset, dst_offset)) = ZoneOffsetCalculator::new()
149+
.compute_offsets_from_time_zone(time_zone_id, &iso)
150+
{
151+
if offset == std_offset {
152+
ZoneVariant::standard()
153+
} else if Some(offset) == dst_offset {
154+
ZoneVariant::daylight()
155+
} else {
156+
return Err(ParseError::InvalidOffsetError);
157+
}
154158
} else {
155-
return Err(ParseError::InvalidOffsetError);
156-
};
157-
}
159+
debug_assert_eq!(time_zone_id.0.as_str(), "unk");
160+
ZoneVariant::standard()
161+
},
162+
);
158163
}
159164
local_time = Some((iso.date, iso.time));
160165
};

0 commit comments

Comments
 (0)