/var/www/hkosl.com/aga/wp-content/plugins/jetpack/sal/class.json-api-date.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
<?php

class WPCOM_JSON_API_Date {
    
/**
     * Returns ISO 8601 formatted datetime: 2011-12-08T01:15:36-08:00
     *
     * @param $date_gmt (string) GMT datetime string.
     * @param $date (string) Optional.  Used to calculate the offset from GMT.
     *
     * @return string
     */
    
static function format_date$date_gmt$date null ) {
        
$timestamp_gmt strtotime"$date_gmt+0000" );

        if ( 
null === $date ) {
            
$timestamp $timestamp_gmt;
            
$hours     $minutes $west 0;
        } else {
            
$date_time date_create"$date+0000" );
            if ( 
$date_time ) {
                
$timestamp date_format$date_time'U' );
            } else {
                
$timestamp 0;
            }

            
// "0000-00-00 00:00:00" == -62169984000
            
if ( - 62169984000 == $timestamp_gmt ) {
                
// WordPress sets post_date=now, post_date_gmt="0000-00-00 00:00:00" for all drafts
                // WordPress sets post_modified=now, post_modified_gmt="0000-00-00 00:00:00" for new drafts

                // Try to guess the correct offset from the blog's options.
                
$timezone_string get_option'timezone_string' );

                if ( 
$timezone_string && $date_time ) {
                    
$timezone timezone_open$timezone_string );
                    if ( 
$timezone ) {
                        
$offset $timezone->getOffset$date_time );
                    }
                } else {
                    
$offset 3600 get_option'gmt_offset' );
                }
            } else {
                
$offset $timestamp $timestamp_gmt;
            }

            
$west   $offset 0;
            
$offset abs$offset );
            
$hours  = (int) floor$offset 3600 );
            
$offset -= $hours 3600;
            
$minutes = (int) floor$offset 60 );
        }

        return (string) 
gmdate'Y-m-d\\TH:i:s'$timestamp ) . sprintf'%s%02d:%02d'$west '-' '+'$hours$minutes );
    }

    
/**
     * Returns ISO 8601 formatted duration interval: P0DT1H10M0S
     *
     * @param string $time Duration in minutes or hours.
     *
     * @return null|string
     */
    
static function format_duration$time ) {
        
$timestamp strtotime$time);

        
// Bail early if we don't recognize a date.
        
if ( empty( $timestamp ) ) {
            return;
        }

        
$days floor$timestamp 86400 );
        
$timestamp $timestamp 86400;

        
$hours floor$timestamp 3600 );
        
$timestamp $timestamp 3600;

        
$minutes floor$timestamp 60 );
        
$timestamp $timestamp 60;

        return (string) 
sprintf(
            
'P%dDT%dH%dM%dS',
            
$days,
            
$hours,
            
$minutes,
            
$timestamp
        
);
    }
}