Edit report at http://bugs.php.net/bug.php?id=53698&edit=1
ID: 53698 User updated by: t at kahkonen dot com Reported by: t at kahkonen dot com Summary: datefmt_localtime() and IntlDateFormatter::localtime() causes Fatal Error Status: Bogus Type: Bug Package: Date/time related Operating System: Linux 32-bit (Centos 5) PHP Version: 5.3.5 Block user comment: N Private report: N New Comment: You are right. The documentation is not. I added a note to the page: http://php.net/manual/en/intldateformatter.localtime.php Previous Comments: ------------------------------------------------------------------------ [2011-01-08 18:42:47] cataphr...@php.net As the documentation says, you need to pass a variable, so you can't use a literal like the 0 you're passing for the last arg. Closing as bogus. ------------------------------------------------------------------------ [2011-01-08 17:11:57] t at kahkonen dot com PHP manual page for datefmt_localtime(): http://www.php.net/manual/en/intldateformatter.localtime.php ------------------------------------------------------------------------ [2011-01-08 17:02:43] t at kahkonen dot com Tested with php 5.3.5 and 5.3.3 (identical configure commands): the same Fatal Error. This seems to be a bug and is essential to get working, because I have not found any other (easy) way to parse locale independent date/time-strings than datefmt_localtime() function. You have to know only user locale (eg. fi_FI.utf8) and the program knows how to parse/format correct full, median or short date and time for this locale. datefmt_parse() is an other one, but it produces timestamp with normal timestamp related problems (for example Year 2038 problem). Meanwhile I use my own command line C program which uses directly ICU library, but using is rather slow. ------------------------------------------------------------------------ [2011-01-08 15:53:38] t at kahkonen dot com Description: ------------ PHP-version: PHP 5.3.3 When executing $arr = datefmt_localtime( $fmt, "Wednesday, December 31, 1969 4:00:00 PM PT",0), $arr should have parsed day, month, year, hour etc. values, but there comes Fatal Error: Only variables can be passed by reference. Configure Command: './configure' '--build=i686-redhat-linux-gnu' '--host=i686- redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '- -sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '-- localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache- file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '-- disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype- dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '- -enable-sysvshm' '--enable-sysvmsg' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--without-mime-magic' '--without-sqlite' '--without-sqlite3' '--with-libxml-dir=/usr' '--enable-xml' '--with-system- tzdata' '--enable-force-cgi-redirect' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable- mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with- xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-mysql=shared,/usr' '--with-mysqli=shared,/usr/bin/mysql_config' '-- enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with- xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-curl=shared,/usr' '--enable-fastcgi' '-- enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,/usr' '--with-pdo-pgsql=shared,/usr' '--with-pdo- sqlite=shared,/usr' '--with-pdo-dblib=shared,/usr' '--enable-json=shared' '--enable-zip=shared' '--with-readline' '--with- pspell=shared' '--enable-phar=shared' '--with-mcrypt=shared,/usr' '--with-tidy=shared,/usr' '--with-mssql=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvshm=shared' '--enable-sysvsem=shared' '--enable-posix=shared' '--with-unixODBC=shared,/usr' '--enable-fileinfo=shared' '--enable-intl=shared' '--with-icu-dir=/usr' '--with-recode=shared,/usr' Test script: --------------- <?php $fmt = datefmt_create( "en_US" ,IntlDateFormatter::FULL,IntlDateFormatter::FULL,'America/Los_Angeles',IntlDateFormatter::GREGORIAN ); $arr = datefmt_localtime( $fmt, "Wednesday, December 31, 1969 4:00:00 PM PT",0); echo "First parsed output is "; if ($arr) { foreach ($arr as $key => $value) { echo "$key : $value , "; } } ?> Expected result: ---------------- First parsed output is tm_sec : 0 , tm_min : 0 , tm_hour : 16 , tm_year : 1969 , tm_mday : 31 , tm_wday : 4 , tm_yday : 365 , tm_mon : 11 , tm_isdst : 0 , Actual result: -------------- Fatal error: Only variables can be passed by reference in test.php on line 3. Line 3 has function datefmt_localtime(). ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=53698&edit=1