Какой формат представляет собой временную метку из 5/6 цифр и как ее преобразовать? - PullRequest
0 голосов
/ 06 сентября 2018

Используя Ratchet WebSocket, я пытаюсь отобразить метку времени отправленного сообщения. Я console.log(e) внутри обратного вызова onmessage и получаю объект:

{
    //... rest of the keys
    timeStamp: 353443
}

Я думал, что это выглядело странно, учитывая, что я отправил его в 13:48. Как ни странно, раньше я отправлял запрос в течение последнего часа, и он возвращал 5-значную временную метку, что значительно усложняло мои исследования.

Я пытался искать в документах Ratchet документы, но ничего не смог найти. Я сразу же попытался узнать, была ли это метка времени UNIX, преобразовав ее в оперативный режим, но все значения вернули

1 января 1970 г. некоторые: время

Как я могу преобразовать возвращенную метку времени в d/m/y H:i? Я ничего не могу найти в каком формате это может быть или как конвертировать.

В настоящее время у меня есть (в моем jQuery):

new Date(data.timeStamp*1000)

но возвращается 1 января.

Я пробовал два раза:

Четверг, 6 сентября 2018 г. 14:03: (секунд было примерно 13)
Четверг 6 сентября 2018 г. 14: 19: 24

Это произвело эти метки времени (соответственно):

0 1 2 3 3 8 4
2 1 9 5 6 8 3

(дисплей был без пробелов)

(примечание: ведущий 0 не выводился - только для сравнения столбцов)

Я попытался сравнить два, все, кроме минуты и секунды, должно быть одинаковым, но только два столбца совпадают.

Как я, возможно, думал, что это могло быть (но оказывается, что это не может быть основано на том, насколько отличны результаты):

Четверг может иметь значение 3 или 4, в зависимости от того, установил ли кодировщик в воскресенье или понедельник значение 0

.

6-е должно логически равняться 6

Сентябрь может быть 8, если Ян = 0

2018 может быть 18

14 может быть 2, если 12 часов с установкой флага am / pm

Вот мой класс Chat.php:

<?php
    namespace App;

    use Ratchet\MessageComponentInterface;
    use Ratchet\ConnectionInterface;

    class Chat implements MessageComponentInterface
    {
        protected $clients;

        public function __construct()
        {
            $this->clients = new \SplObjectStorage;
        }

        public function onOpen(ConnectionInterface $conn)
        {
            $this->clients->attach($conn); # store new con to send msg later
            echo 'New Connection! '. $conn->resourceId ."\n";
        }

        public function onMessage(ConnectionInterface $from, $msg)
        {
            $numRecv = count($this->clients) - 1;

            echo sprintf(
                'Connection %d sending message "%s" to %d other connection%s'. "\n",
                $from->resourceId, $msg, $numRecv, $numRecv == 1 ? '' : 's'
            );

            foreach ($this->clients as $client)
            {
                if ($from !== $client) {
                    $client->send($msg); # sender is not receiver, send to each client connected
                }
            }
        }

        public function onClose(ConnectionInterface $conn)
        {
            $this->clients->detach($conn); # con is closed, rm it, can no longer send it a msg
            echo 'Connection '. $conn->resourceId .' has disconnected'. "\n";
        }

        public function onError(ConnectionInterface $conn, \Exception $e)
        {
            echo 'An error has occurred: '. $e->getMessage() ."\n";
            $conn->close();
        }
    }

и мой чат-сервер.php

<?php
    use Ratchet\Server\IoServer;
    use Ratchet\Http\HttpServer;
    use Ratchet\WebSocket\WsServer;
    use App\Chat;

    require dirname(__DIR__). '/vendor/autoload.php';

    $server = IoServer::factory(
        new HttpServer(
            new WsServer(
                new Chat()
            )
        ),
        8080
    );

    $server->run();

ссылка на проект: http://socketo.me/

Некоторые математики, которые я сделал для фигур:

2195683 - 123384 = 2072299

разница между 14:03:13 и 14:19:24 составляет 16 минут и 11 секунд

Почему-то 16 минут и 11 секунд должны примерно равняться 2072299

большое обновление

Хорошо, я сравнил 4 новые даты:

Чт 06 сентября 2018 15: 26: 40

Чт 06 сентября 2018 15: 31: 03

Чт 06 сентября 2018 16: 26: 40

Чт 06 сентября 2018 16: 31: 03

У меня была теория, что, возможно, время шло от определенного времени, поэтому 26:40 всегда будет таким же, как X микросекунд от часа. Вот результаты:

Чт 06 сентября 2018 15:26:40
40491

чт 06 сентября 2018 15:31:03
303762

чт 06 сентября 2018 16:26:40
1351367

чт 06 сентября 2018 16:31:03
1614388

Я решил выяснить разницу между ними, все 4 минуты и 23 секунды, но делаю:

303762 - 40491 = 263271

и

1614388 - 1351367 = 263021

с разницей в 250.

Я также сравнил один час для обоих:

1351367 - 40491 = 1310876

и

1614388 - 303762 = 1310626

, который снова имеет разницу в 250.

Так что никакое количество времени не является одинаковым, что заставляет меня подозревать, что оно идет с определенного времени, а не времени.

Затем я решил сделать это с интервалом в 1 с:

21 = 2232366

22 = 2233365

23 = 2234333

первые 4 цифры увеличиваются, как и следовало ожидать (в 1 с), но затем идут 66, 65, 33 ... как это генерируется?

Спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

Благодаря комментарию @ Мишеля мне удалось это выяснить.

Я зашел на страницу проекта jagery-плагина timeago, и он показал, что он идет от соединения, как сказал Мишель.

Это идет от времени соединения с сервером - для проверки я сделал:

загрузил скрипт в 9: 08: 00

пользователь 1 подключается в 9: 09: 00

пользователь 2 подключается в 9: 12: 00

сообщение 1 в 9: 19: 00

сообщение 2 в 9: 20: 00

Сообщение 1 вернуло метку времени: 653905

Сообщение 2 вернуло метку времени: 713738

При преобразовании миллисекунд в минуты первые дают 10 минут, а последние возвращаются 11 минут.

Похоже, что это в мс, но из-за использования timeago все идет с запуска сервера - не 1 января 1970 года.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...