PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
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 8 months ago TemporalFacade.php 8 months ago
TemporalFacade.php
148 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 /**
134 * Get the formatted date time using the site specific time zone and format settings
135 *
136 * @since 4.13.0
137 */
138 public function getFormattedDateTimeUsingTimeZoneAndFormatSettings(DateTimeInterface $dateTime): string
139 {
140 $dateFormat = get_option('date_format');
141 $timeFormat = get_option('time_format');
142
143 $format = sprintf('%s \a\t %s', $dateFormat, $timeFormat);
144
145 return wp_date($format, $dateTime->getTimestamp(), wp_timezone());
146 }
147 }
148