DateTime   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 1 Features 0
Metric Value
wmc 5
eloc 8
c 3
b 1
f 0
dl 0
loc 45
ccs 8
cts 8
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A mysql_now() 0 3 1
A mysql_to_days() 0 10 1
A mysql_unix_timestamp() 0 9 3
1
<?php
2
3
namespace Vectorface\MySQLite\MySQL;
4
5
/**
6
 * Provides Date and Time MySQL compatibility functions for SQLite.
7
 *
8
 * http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
9
 */
10
trait DateTime
11
{
12
    /**
13
     * NOW - Return the current date and time
14
     *
15
     * @return string The current timestamp, in MySQL's date format.
16
     */
17 1
    public static function mysql_now()
18
    {
19 1
        return date("Y-m-d H:i:s");
20
    }
21
22
    /**
23
     * TO_DAYS - Return the date argument converted to days
24
     *
25
     * @param string $date A date to be converted to days.
26
     * @return int The date converted to a number of days since year 0.
27
     */
28 1
    public static function mysql_to_days($date)
29
    {
30
        // Why does this work on my Debian machine with PHP 5.6, and not on Travis?
31
        // - strtotime("0000-12-31") yields -62135665200
32
        // - 60 * 60 * 24 is 86400 (seconds)
33
        // - 1413108827 / 86400 = -719162.79166667, python similarly says -719162.7916666666
34
        // - ceil bumps it up 1 to -719162
35
        // - 719527 + (-719162), python agrees
36
        // - So why is Travis giving me 364?!? Their PHP is configured for a different timezone (I think)!
37 1
        return intval(719528 + ((strtotime($date) - date("Z")) / (60 * 60 * 24)));
38
    }
39
40
    /**
41
     * UNIX_TIMESTAMP - Return a UNIX timestamp
42
     *
43
     * @param string $date The date to be converted to a unix timestamp. Defaults to the current date/time.
44
     * @return int The number of seconds since the unix epoch.
45
     */
46 1
    public static function mysql_unix_timestamp($date = null)
47
    {
48 1
        if (!isset($date)) {
49 1
            return time();
50
        } elseif (count_chars(str_replace([":", "-", " "], "", $date), 3) === "0") {
51
            return 0; /* MySQL's implementation returns zero for 0000-00-00 00:00:00 and similar */
52 1
        }
53
54
        return strtotime($date);
55
    }
56
}
57