|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2014-04-24 09:47 UTC] honzap at gmail dot com
Description: ------------ I need using DateTime with microseconds. I've found some examples like at this page: http://stackoverflow.com/questions/169428/php-datetime-microseconds-always-returns-0 I've used my own class extending \DateTime. Formatting still doesn't work in my application so I've looking for something bad and found setting setlocale(LC_ALL, ...) calling. I've found, setting LC_NUMERIC breaks down the function of microseconds. Testing script is at the attachment. It's probably caused because in my chosen locale the decimal point is comma (",") not point ("."). Test script: --------------- date_default_timezone_set('Europe/Prague'); $time = microtime(true); $micro_time = sprintf("%06d", ($time - floor($time)) * 1000000); $date = new DateTime(date('Y-m-d H:i:s.' . $micro_time, $time)); echo $date->format("Y-m-d H:i:s.u") . " - OK\n"; setlocale(LC_NUMERIC, 'cs_CZ.utf8'); $date = new DateTime(date('Y-m-d H:i:s.' . $micro_time, $time)); echo $date->format("Y-m-d H:i:s.u") . " - BAD!\n"; PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 09 16:00:01 2025 UTC |
We have a problem link to this LC_NUMERIC issue : float numbers suddently get coma rather than point for decimal separator. It's extremely problematic as it's in several ecommerce websites. Also, is rare and really random (kind of 1 per 10 000 entries). As it's the LC_NUMERIC, str_replace(",", ".", $str) doesn't work. we are using PHP 5.4.26 on a debian. On the same server, we noticed a similar problem with LC_TIME : setlocale(LC_TIME, 'fr_FR'); // fixed in the top of the php script. and randomly, an average of 1 on 20 reload, we have a date displayed in english. We noticed that putting the setlocale(LC_TIME, 'fr_FR'); just before the strftime('%A %d %B') seems to work arround the bug, for now. VoilĂ , hope it can help !