PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.1
GiveWP – Donation Plugin and Fundraising Platform v4.3.1
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / Support / Facades / DateTime / TemporalFacade.php
give / src / Framework / Support / Facades / DateTime Last commit date
Temporal.php 1 year ago TemporalFacade.php 1 year ago
TemporalFacade.php
133 lines
1 <?php
2
3 namespace Give\Framework\Support\Facades\DateTime;
4
5 use DateTime;
6 use DateTimeImmutable;
7 use DateTimeInterface;
8 use DateTimeZone;
9 use Exception;
10 use Give\Log\Log;
11
12 /**
13 * @since 2.19.6
14 */
15 class TemporalFacade
16 {
17 /**
18 * @since 2.20.0 minor clean up and add types to signature
19 * @since 2.19.6
20 */
21 public function toDateTime(string $date): DateTimeInterface
22 {
23 return DateTime::createFromFormat('Y-m-d H:i:s', $date, wp_timezone());
24 }
25
26 /**
27 * @since 2.20.0 simplify and add types to signature
28 * @since 2.19.6
29 */
30 public function getCurrentDateTime(): DateTimeInterface
31 {
32 return new DateTime('now', wp_timezone());
33 }
34
35 /**
36 * @since 2.19.6
37 *
38 * @param DateTimeInterface $dateTime
39 *
40 * @return string
41 */
42 public function getFormattedDateTime(DateTimeInterface $dateTime)
43 {
44 return $dateTime->format('Y-m-d H:i:s');
45 }
46
47 /**
48 * @since 2.19.6
49 *
50 * @return string
51 */
52 public function getCurrentFormattedDateForDatabase()
53 {
54 return current_datetime()->format('Y-m-d H:i:s');
55 }
56
57 /**
58 * Immutably returns a new DateTime instance with the microseconds set to 0.
59 *
60 * @since 4.0.0 Extracted new immutableOrClone method.
61 * @since 2.20.0
62 */
63 public function withoutMicroseconds(DateTimeInterface $dateTime)
64 {
65 return $this
66 ->immutableOrClone($dateTime)
67 ->setTime(
68 $dateTime->format('H'),
69 $dateTime->format('i'),
70 $dateTime->format('s')
71 );
72 }
73
74 /**
75 * Immutably returns a new DateTime instance with the time set to the start of the day.
76 *
77 * @since 4.0.0
78 */
79 public function withStartOfDay(DateTimeInterface $dateTime): DateTimeInterface
80 {
81 return $this
82 ->immutableOrClone($dateTime)
83 ->setTime(0, 0, 0, 0);
84 }
85
86 /**
87 * Immutably returns a new DateTime instance with the time set to the end of the day.
88 *
89 * @since 4.0.0
90 */
91 public function withEndOfDay(DateTimeInterface $dateTime): DateTimeInterface
92 {
93 return $this
94 ->immutableOrClone($dateTime)
95 ->setTime(23, 59, 59, 999999);
96 }
97
98 /**
99 * @since 4.0.0
100 */
101 public function immutableOrClone(DateTimeInterface $dateTime): DateTimeInterface
102 {
103 return $dateTime instanceof DateTimeImmutable
104 ? $dateTime
105 : clone $dateTime;
106 }
107
108 /**
109 * @since 3.20.0
110 */
111 public function getDateTimestamp(string $date, string $timezone = ''): int
112 {
113 try {
114 $timezone = empty($timezone) ? wp_timezone_string() : $timezone;
115 $timezone = new DateTimeZone($timezone);
116 $date = new DateTime($date, $timezone);
117
118 return $date->getTimestamp();
119 } catch (Exception $e) {
120 Log::error(
121 'Failed to parse date string into a timestamp',
122 [
123 'input_date' => $date,
124 'input_timezone' => $timezone,
125 'error_code' => $e->getCode(),
126 'error_message' => $e->getMessage(),
127 ]
128 );
129 return 0;
130 }
131 }
132 }
133