PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Formatter / Date / DateObject.php
codepress-admin-columns / classes / Formatter / Date Last commit date
DateFormat.php 5 months ago DateObject.php 5 months ago LocalizedDateFormat.php 5 months ago TimeDifference.php 5 months ago TimeFormat.php 5 months ago Timestamp.php 5 months ago
DateObject.php
63 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Formatter\Date;
6
7 use AC\Exception\ValueNotFoundException;
8 use AC\Formatter;
9 use AC\Type\Value;
10 use DateTime;
11
12 class DateObject implements Formatter
13 {
14
15 private string $source_format;
16
17 public function __construct(string $source_format)
18 {
19 $this->source_format = $source_format;
20 }
21
22 public function format(Value $value): Value
23 {
24 $date_string = (string)$value;
25
26 if ( ! $date_string) {
27 throw ValueNotFoundException::from_id($value->get_id());
28 }
29
30 $date = DateTime::createFromFormat($this->source_format, $date_string) ?: null;
31
32 if (null === $date || $this->is_invalid_parsed_date()) {
33 throw ValueNotFoundException::from_id($value->get_id());
34 }
35
36 return $value->with_value(
37 $date
38 );
39 }
40
41 /**
42 * Checks whether a DateTime parsing operation failed due to an invalid date
43 * (for example: "0000-00-00 00:00:00").
44 * This function must be called immediately after DateTime::createFromFormat(),
45 * as DateTime::getLastErrors() is global and resets on the next parse.
46 * @return bool True if the date was parsed but marked invalid, false otherwise.
47 */
48 function is_invalid_parsed_date(): bool
49 {
50 $errors = DateTime::getLastErrors();
51
52 if ($errors === false) {
53 return false;
54 }
55
56 $errors = (array)$errors;
57
58 return ($errors['warning_count'] ?? 0) > 0
59 && isset($errors['warnings'])
60 && in_array('The parsed date was invalid', $errors['warnings'], true);
61 }
62
63 }