Create 3 digit Millisecond with php
Solution 1
How about something like this?
$mil = 1328910295939;
function toTimestamp($milliseconds)
{
$seconds = $milliseconds / 1000;
$remainder = round($seconds - ($seconds >> 0), 3) * 1000;
return date('Y:m:d H:i:s.', $seconds).$remainder;
}
echo toTimestamp($mil);
Tadaa!
It should be pretty quick too.
Also, this is the output: 2012:02:10 15:44:55.939
- why you're not using - for delimiting the date portion beats me.
Solution 2
Just trim off the last two characters:
substr(date('Y-m-d H:i:s.u',1328910295939), 0, -2)
Solution 3
Here's a function that will do it for you accurately (by rounding, not cutting off):
function getTimestamp()
{
$microtime = floatval(substr((string)microtime(), 1, 8));
$rounded = round($microtime, 3);
return date("Y-m-d H:i:s") . substr((string)$rounded, 1, strlen($rounded));
}
Explanation:
microtime() returns 2 numbers as 1 string, delimited by a space. the 2nd number is the amount of seconds since the unix epoch, and the 1st number is the amount of microseconds since the 2nd number. Basically, the first number is the amount of microseconds expressed in a 8 precision format (0.00000000) and trailing 0s are never cut off.
We round this to a precision of 3 (0.00), and cut off the leading 0, and append that to the actual timestamp.
For some reason the php doc for u, microseconds, doesn't seem to be actually supported. I get 0.000 everytime when using that method. So I resorted to microtime() as a backup solution.
Solution 4
$t = 1328910295939;
echo date('Y-m-d H:i:s.', substr($t, 0, -3)) . substr($t, -3);
Output: 2012-02-10 16:44:55.939
(it depends on the timezone)
Smith
Updated on July 29, 2022Comments
-
Smith almost 2 years
I have 13 digit number and want to create date and time with include milisecond
Example code is like this this is my php script
$mil = 1328910295939; $seconds = $mil / 1000; $showdate = date('Y:m:d H:i:s', $seconds) ; echo "$showdate";
the result is like this 2012:02:10 15:44:55.xxx ===> xxx is 3 digit miliseconds that i want to show up.
and how to include with 3 digit milisecond after H:i:s
Please help me.....
-
iblue about 12 yearsOn my system, this evalutes to "2025-12-10 22:17:55.0000" (PHP 5.3.6 on Ubuntu)
-
Smith about 12 yearsthis is my php script $mil = 1328910295939; $seconds = $mil / 1000; $showdate = date('Y:m:d H:i:s', $seconds) ; echo "$showdate"; the result is like this 2012:02:10 15:44:55 and how to include with 3 digit milisecond after H:i:s
-
Smith about 12 yearsExample code is like this this is my php script $mil = 1328910295939; $seconds = $mil / 1000; $showdate = date('Y:m:d H:i:s', $seconds) ; echo "$showdate"; the result is like this 2012:02:10 15:44:55.xxx ===> xxx is 3 digit miliseconds that i want to show up.
-
salathe about 12 yearsThe
u
format is supported for dates that contain microseconds (e.g.DateTime
instances). Thedate()
function only works with integer timestamps so does not know about fractional seconds. -
Smith about 12 yearsThanks dude..... great work. u are the best, because iam searching for a week in internet does not have solution.
-
Smith about 12 yearsHello westie i had still problem the HOUR time was 2 hour faster... example 22:07:45.434 an HOURS should be 20.
-
Westie about 12 yearsThat's a problem with your server - you'll need to set the timezone.
-
Pang over 7 years@Westie Should left pad
$remainder
with zeroes if it has fewer than 3 digits. For example, if$mil = 1328910295039
, the output should be2012:02:10 21:44:55.039
, not2012:02:10 21:44:55.39
.