]> granicus.if.org Git - php/commitdiff
fix bug #75222 DateInterval microseconds property always 0
authorjhdxr <jhdxr@php.net>
Mon, 25 Sep 2017 18:51:33 +0000 (02:51 +0800)
committerJoe Watkins <krakjoe@php.net>
Wed, 27 Sep 2017 05:23:42 +0000 (06:23 +0100)
NEWS
ext/date/php_date.c
ext/date/tests/bug75222.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index abc4f804d5ab349f46d77992b2a191b8256e4d03..de668e252b05405f4ab05f44eff8bcd07fe1d014 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,9 @@ PHP                                                                        NEWS
   . Fixed bug #75220 (Segfault when calling is_callable on parent). 
     (andrewnester)
 
+- Date:
+  . Fixed bug #75222 (DateInterval microseconds property always 0). (jhdxr)
+
 - litespeed:
   . Fixed bug #75248 (Binary directory doesn't get created when building 
     only litespeed SAPI). (petk)
index 86ac49f7608792ab9705b987d5313bf1d234fff9..c99dad59d468180e91aa187290d95b481404fa4f 100644 (file)
@@ -4165,7 +4165,7 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
                GET_VALUE_FROM_STRUCT(i, "i");
                GET_VALUE_FROM_STRUCT(s, "s");
                if (strcmp(Z_STRVAL_P(member), "f") == 0) {
-                       fvalue = obj->diff->us / 1000000;
+                       fvalue = obj->diff->us / 1000000.0;
                        break;
                }
                GET_VALUE_FROM_STRUCT(invert, "invert");
diff --git a/ext/date/tests/bug75222.phpt b/ext/date/tests/bug75222.phpt
new file mode 100644 (file)
index 0000000..2a2ee5f
--- /dev/null
@@ -0,0 +1,17 @@
+--TEST--
+Bug #75222 DateInterval microseconds property always 0
+--FILE--
+<?php
+
+$dt1 = new \DateTimeImmutable('2017-01-01T00:00:00.000000Z');
+$dt2 = new \DateTimeImmutable('2017-01-01T00:00:00.123456Z');
+$diff = $dt1->diff($dt2);
+//var_dump($diff);
+var_dump($diff->f);
+var_dump(get_object_vars($diff)['f']);
+var_dump($diff->f === get_object_vars($diff)['f']);
+?>
+--EXPECTF--
+float(0.123456)
+float(0.123456)
+bool(true)