/var/www/html_us/wp-content/plugins/woocommerce/includes/class-wc-datetime.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
/**
 * WC Wrapper for PHP DateTime which adds support for gmt/utc offset when a
 * timezone is absent
 *
 * @since   3.0.0
 * @package WooCommerce\Classes
 */

defined'ABSPATH' ) || exit;

/**
 * Datetime class.
 */
class WC_DateTime extends DateTime {

    
/**
     * UTC Offset, if needed. Only used when a timezone is not set. When
     * timezones are used this will equal 0.
     *
     * @var integer
     */
    
protected $utc_offset 0;

    
/**
     * Output an ISO 8601 date string in local (WordPress) timezone.
     *
     * @since  3.0.0
     * @return string
     */
    
public function __toString() {
        return 
$this->formatDATE_ATOM );
    }

    
/**
     * Set UTC offset - this is a fixed offset instead of a timezone.
     *
     * @param int $offset Offset.
     */
    
public function set_utc_offset$offset ) {
        
$this->utc_offset intval$offset );
    }

    
/**
     * Get UTC offset if set, or default to the DateTime object's offset.
     */
    
#[\ReturnTypeWillChange]
    public function 
getOffset() {
        return 
$this->utc_offset ?: parent::getOffset();
    }

    
/**
     * Set timezone.
     *
     * @param DateTimeZone $timezone DateTimeZone instance.
     * @return DateTime
     */
    
#[\ReturnTypeWillChange]
    public function 
setTimezone$timezone ) {
        
$this->utc_offset 0;
        return 
parent::setTimezone$timezone );
    }

    
/**
     * Missing in PHP 5.2 so just here so it can be supported consistently.
     *
     * @since  3.0.0
     * @return int
     */
    
#[\ReturnTypeWillChange]
    public function 
getTimestamp() {
        return 
method_exists'DateTime''getTimestamp' ) ? parent::getTimestamp() : $this->format'U' );
    }

    
/**
     * Get the timestamp with the WordPress timezone offset added or subtracted.
     *
     * @since  3.0.0
     * @return int
     */
    
public function getOffsetTimestamp() {
        return 
$this->getTimestamp() + $this->getOffset();
    }

    
/**
     * Format a date based on the offset timestamp.
     *
     * @since  3.0.0
     * @param  string $format Date format.
     * @return string
     */
    
public function date$format ) {
        return 
gmdate$format$this->getOffsetTimestamp() );
    }

    
/**
     * Return a localised date based on offset timestamp. Wrapper for date_i18n function.
     *
     * @since  3.0.0
     * @param  string $format Date format.
     * @return string
     */
    
public function date_i18n$format 'Y-m-d' ) {
        return 
date_i18n$format$this->getOffsetTimestamp() );
    }
}