Skip to content

Commit b31d8cc

Browse files
hgoldsteinfacebook-github-bot
authored andcommitted
Fix up some DateTime builtins
Summary: A good number of DateTime methods can return false, which sucks. But a bunch are well typed! Let's fix those. Reviewed By: Wilfred Differential Revision: D25535433 fbshipit-source-id: c1f0c281a1f4729453036b1519554ae4850eaa06
1 parent 408bb36 commit b31d8cc

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

hphp/hack/hhi/stdlib/builtins_datetime.hhi

+23-15
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ const DAY_5 = 131083;
2828
const DAY_6 = 131084;
2929
const DAY_7 = 131085;
3030

31+
type DateTimeErrors = shape(
32+
'warning_count' => int,
33+
'warnings' => darray<int, string>,
34+
'error_count' => int,
35+
'errors' => darray<int, string>
36+
);
37+
3138
<<__PHPStdLib>>
3239
function checkdate(int $month, int $day, int $year);
3340
<<__PHPStdLib>>
@@ -151,13 +158,13 @@ class DateTime implements DateTimeInterface {
151158
public function __construct(string $time = 'now', ?DateTimeZone $timezone = null);
152159
public function add(DateInterval $interval);
153160
public function modify(string $modify);
154-
public function getOffset();
155-
public function getTimestamp();
161+
public function getOffset(): int;
162+
public function getTimestamp(): int;
156163
public function getTimezone();
157164
public function setDate(int $year, int $month, int $day);
158165
public function setISODate(int $year, int $week, int $day = 1);
159166
public function setTime(int $hour, int $minute, int $second = 0);
160-
public function setTimestamp(int $unixtimestamp);
167+
public function setTimestamp(int $unixtimestamp): this;
161168
public function setTimezone(DateTimeZone $timezone);
162169
public function sub(DateInterval $interval);
163170
public function diff(DateTimeInterface $datetime2, bool $absolute = false);
@@ -167,24 +174,25 @@ class DateTime implements DateTimeInterface {
167174
string $time,
168175
?DateTimeZone $timezone = null,
169176
);
170-
public static function getLastErrors(): darray;
177+
public static function getLastErrors(): DateTimeErrors;
171178
}
172179

180+
173181
class DateTimeImmutable implements DateTimeInterface {
174182
private DateTime $data;
175183

176184
public function __construct(string $time = 'now', ?DateTimeZone $timezone = null);
177-
public function add(DateInterval $interval);
178-
public function modify(string $modify);
179-
public function getOffset();
180-
public function getTimestamp();
185+
public function add(DateInterval $interval): this;
186+
public function modify(string $modify): this;
187+
public function getOffset(): int;
188+
public function getTimestamp(): int;
181189
public function getTimezone();
182-
public function setDate(int $year, int $month, int $day);
183-
public function setISODate(int $year, int $week, int $day = 1);
184-
public function setTime(int $hour, int $minute, int $second = 0);
185-
public function setTimestamp(int $unixtimestamp);
186-
public function setTimezone(DateTimeZone $timezone);
187-
public function sub(DateInterval $interval);
190+
public function setDate(int $year, int $month, int $day): this;
191+
public function setISODate(int $year, int $week, int $day = 1): this;
192+
public function setTime(int $hour, int $minute, int $second = 0): this;
193+
public function setTimestamp(int $unixtimestamp): this;
194+
public function setTimezone(DateTimeZone $timezone): this;
195+
public function sub(DateInterval $interval): this;
188196
public function diff(DateTimeInterface $datetime2, bool $absolute = false);
189197
public function format(string $format);
190198
public static function createFromFormat(
@@ -193,7 +201,7 @@ class DateTimeImmutable implements DateTimeInterface {
193201
?DateTimeZone $timezone = null,
194202
);
195203
public static function createFromMutable(DateTime $datetime);
196-
public static function getLastErrors(): darray;
204+
public static function getLastErrors(): DateTimeErrors;
197205
public function __clone();
198206
}
199207

hphp/system/php/date/datetimeimmutable.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ public function format($format) {
7474
return $this->data->format($format);
7575
}
7676

77-
public function getOffset() {
77+
public function getOffset(): int {
7878
return $this->data->getOffset();
7979
}
8080

81-
public function getTimestamp() {
81+
public function getTimestamp(): int {
8282
return $this->data->getTimestamp();
8383
}
8484

0 commit comments

Comments
 (0)