Вопрос по php, unix – Получение метки времени unix в миллисекундах в PHP5 и Actionscript3

25

В Actionscript метка времени Unix в миллисекундах получается следующим образом:

public static function getTimeStamp():uint
        {
            var now:Date = new Date();
            return now.getTime();
        }

В документе четко указано следующее:

getTime():Number Returns the number of milliseconds since midnight January 1, 1970, universal time, for a Date object.

Когда я отслеживаю его, он возвращает следующее:

824655597

Так, 824655597/1000/60/60/24/365 = 0,02 года. Это явно не правильно, так как должно быть около 39 лет.

Вопрос № 1: что здесь не так?

Теперь перейдем к части PHP: я тоже пытаюсь получить метку времени в миллисекундах.microtime() Функция возвращает строку (0.29207800 1246365903) или число с плавающей запятой (1246365134.01), в зависимости от заданного аргумента. Поскольку я думал, что временные метки были легкими, я собирался сделать это сам. Но теперь, когда я попробовал и заметил это смещение, и совмещаю это с моими проблемами в Actionscript, я действительно не имею понятия.

Вопрос № 2: как мне сделать, чтобы он возвращал количество миллисекунд в метке времени Unix?

Метки времени должны быть такими легкими, я, наверное, что-то упустил ... извините за это. Заранее спасибо.

EDIT1: Ответил на первый вопрос сам. Увидеть ниже.
EDIT2: Ответил на второй вопрос и сам. Увидеть ниже. Не могу принять ответ в течение 48 часов.

Ваш Ответ

11   ответов
-1
$timestamp = str_replace(".","",number_format((float)microtime(true),2,'.',''));
-1

Что-то вроде этого:

$mili_sec_time = $_SERVER['REQUEST_TIME_FLOAT'] * 1000;

Дает тип с плавающей запятой, представляющий миллисекунды от эпохи UNIX до начала запроса.

4

microtime () в php5 возвращает метку времени Unix с микросекундами согласномикропоры () и если аргумент get_as_float не предоставлен, он выдает строку, отформатированную как & quot; msec sec & quot; первая часть - это миллисекунда, а вторая - вторая. Просто разделите его на две части, и вы получите две части отметки времени

5

ежду Javascript, Actionscript и PHP

Javascript / Actionscript:

function getTimestamp(){
    var d = new Date();
    return Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()).valueOf();
}

PHP:

function getTimestamp(){
    $seconds = microtime(true); // true = float, false = weirdo "0.2342 123456" format 
    return round( ($seconds * 1000) );
}

См. Примечание PHP по адресу "ben at sixg dot com". комментарий на:http://www.php.net/manual/en/function.gmmktime.php

ВЫПИСКА: Для большинства целей и задач вы можете представить, что mktime () сначала преобразует ваши входные параметры в GMT, а затем вызывает gmmktime (), который создает временную метку GMT.

Таким образом, time () всегда будет возвращать одну и ту же вещь в один и тот же момент времени в любой точке мира.
При заданных параметрах времени функции gmmktime () и mktime () преобразуют эти параметры времени из соответствующего часового пояса (GMT для gmmktime (), местное время для mktime ()), прежде чем вычислять соответствующую временную метку.

UPDATE:

В некоторых версиях PHP отметка времени с миллисекундами слишком велика для отображения в виде строки. Так что используйте функцию sprintf, чтобы получить строковое значение:

PHP

function getTimestamp($asString=false){
    $seconds = microtime(true); // false = int, true = float
    $stamp = round($seconds * 1000);
    if($asString == true){
        return sprintf('%.0f', $stamp);
    } else {
        return $stamp;
    }
}
Upvote для спринтф
2

Простой ответ для PHP:

function exact_time() {
    $t = explode(' ',microtime());
    return ($t[0] + $t[1]);
}
17

new Date().getTime() должно сработать.

В PHP вы можете просто позвонитьвремя() чтобы получить время, прошедшее с 1 января 1970 года 00:00:00 по Гринвичу в секундах. Если вы хотите миллисекунды, просто сделайте(time()*1000).

Если вы используетемикропоры () умножьте вторую часть на 1000, чтобы получить миллисекунды. Умножьте первую часть на 1000, чтобы получить миллисекунды, и округлите их. Затем сложите два числа вместе. Voil & # xe1 ;.

время () * 1000 - ужасный ответ :-(
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Tom
Error: User Rate Limit Exceeded
0

<?php
date_default_timezone_set('UTC');
$d = new \DateTime('some_data_string');
$mts = $d->getTimestamp().substr($d->format('u'),0,3); // millisecond timestamp
0

Эта функция имеет объявленный тип возврата.

function timestamp_ms(): int {
    $times = gettimeofday();
    $seconds = strval($times["sec"]);
    $milliseconds = strval(floor($times["usec"]/1000));
    $missingleadingzeros = 3-strlen($milliseconds);
    if($missingleadingzeros >0){
        for($i = 0; $i < $missingleadingzeros; $i++){
            $milliseconds = '0'.$milliseconds;
        }
    }
    return intval($seconds.$milliseconds);
}

PHP 5

function timestamp_ms() {
    $times = gettimeofday();
    $seconds = strval($times["sec"]);
    $milliseconds = strval(floor($times["usec"]/1000));
    $missingleadingzeros = 3-strlen($milliseconds);
    if($missingleadingzeros >0){
        for($i = 0; $i < $missingleadingzeros; $i++){
            $milliseconds = '0'.$milliseconds;
        }
    }
    return intval($seconds.$milliseconds);
}
14

ции. Это должен быть номер.

public static function getTimeStamp():Number
        {
            var now:Date = new Date();
            return now.getTime();
        }

Думаю, теперь у меня есть функция для получения миллисекунд в PHP5.

function msTimeStamp() {
    return round(microtime(1) * 1000);
}
Пожалуйста, измените на microtime (правда)
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Tom
Хм, так что не голосуйте, хотя я дал правильный ответ раньше, чем вы?
0

я думаю, вы должны использовать:

public function get_millisecond() {
    list($milliPart, $secondPart) = explode(' ', microtime());
    $milliPart = substr($milliPart, 2, 3);
    return $secondPart . $milliPart;
}

это исправит ошибку в некотором примере get get миллисекунды, где mili-часть имеет вид: 0.056. В каком-то примере конвертируйте милли часть в плавающее, вы получите 56 вместо 056. Я думаю, что кто-то хочет 056.

особенно когда вам нужна миллисекунда для заказа некоторых данных.

надеюсь поможет. :)

5

Использовать этот:

intval(microtime(true)*1000)

Похожие вопросы