PluginProbe
Independent Analytics – WordPress Analytics Plugin / 2.10.4
Independent Analytics – WordPress Analytics Plugin v2.10.4
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 All 120 releases
independent-analytics / IAWP / Utils / Timezone.php
Timezone.php
73 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace IAWP\Utils;
4
5 use DateTimeZone;
6 /** @internal */
7 class Timezone
8 {
9 public static function utc_timezone() : DateTimeZone
10 {
11 return new DateTimeZone('UTC');
12 }
13 public static function utc_offset() : string
14 {
15 return '+00:00';
16 }
17 public static function utc_offset_in_hours() : float
18 {
19 return 0;
20 }
21 public static function utc_offset_in_seconds() : int
22 {
23 return 0;
24 }
25 public static function site_timezone() : DateTimeZone
26 {
27 $timezone_string = \get_option('timezone_string');
28 if ($timezone_string) {
29 return new DateTimeZone($timezone_string);
30 } else {
31 return new DateTimeZone(self::site_offset());
32 }
33 }
34 // Will return an offset using the WordPress timezone set by the user
35 // Example return values: -04:00, +00:00, or +5:45
36 public static function site_offset() : string
37 {
38 // Start with the offset such as -4, 0, or 5.75
39 $offset_in_hours = (float) \get_option('gmt_offset');
40 // Build a string to represent the offset such as -04:00, +00:00, or +5:45
41 $result = '';
42 // Start with either - or +
43 $result .= $offset_in_hours < 0 ? '-' : '+';
44 $whole_part = \abs($offset_in_hours);
45 $hour_part = \floor($whole_part);
46 $minute_part = $whole_part - $hour_part;
47 $hours = \strval($hour_part);
48 $minutes = \strval($minute_part * 60);
49 // Add hour part to result
50 $result .= \str_pad($hours, 2, '0', \STR_PAD_LEFT);
51 // Add separator
52 $result .= ':';
53 // Add minute part to result
54 $result .= \str_pad($minutes, 2, '0', \STR_PAD_LEFT);
55 return $result;
56 }
57 public static function site_offset_in_hours() : float
58 {
59 return (float) \get_option('gmt_offset');
60 }
61 /**
62 * @param \DateTime $date The offset depends on what time of year the datetime is for
63 *
64 * @return int Offset in seconds
65 */
66 public static function site_offset_in_seconds(\DateTime $date) : int
67 {
68 $timezone = self::site_timezone();
69 $offset_in_seconds = $timezone->getOffset($date);
70 return $offset_in_seconds;
71 }
72 }
73