+ Ответить в теме
Показано с 1 по 6 из 6
  1. #1
    Аватар для Robodel Robodel Не известно кто Любопытный
    Сообщений
    29
    Поблагодарили 0 раз(а) в 0 сообщениях

    [DN] Timestamp в строку. Как?

    Привет, умники!

    Нубство не позволяет мне сконвертить timestamp в строку. Причем не текущее время надо сконвертить, а то что передаю.

    Есть строка типа:
    1438326415

    Надо из неё получить строку типа:
    2018-09-28T12:00:00.000Z

    Гуглил, не нашлось. Документация про объект Time в DevelNext прочёл - там тоже ничего нет про это. Выручайте

  2. #2
    Аватар для PiEy PiEy Очень опасный тип PiEy Очень опасный тип PiEy Очень опасный тип Путешественник
    Сообщений
    428
    Поблагодарили 40 раз(а) в 40 сообщениях
    PHP код:
    $str date("d/m/y"$timestamp); 

  3. #3
    Аватар для Robodel Robodel Не известно кто Любопытный
    Сообщений
    29
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от PiEy Посмотреть сообщение
    PHP код:
    $str date("d/m/y"$timestamp); 
    Это уже пробовал. В том то и проблема что DevelNext подобные функции не поддерживает. Вот чего пишет:

    Fatal error: Uncaught Error: Call to undefined function app\modules\date() in res://app/modules/MainModule.php on line 189, position 20

  4. #4
    Аватар для PiEy PiEy Очень опасный тип PiEy Очень опасный тип PiEy Очень опасный тип Путешественник
    Сообщений
    428
    Поблагодарили 40 раз(а) в 40 сообщениях
    PHP код:
    $format = new TimeFormat('dd.MM.yyyy');
    $date $format->parse($timestamp);

    // $date это объект типа Time 
    var_dump($date); 
    хз попробуй этим навонять

  5. #5
    Аватар для Robodel Robodel Не известно кто Любопытный
    Сообщений
    29
    Поблагодарили 0 раз(а) в 0 сообщениях
    Решение нашел сам. Даже два. На случай если кто-то будет гуглить тут тот же вопрос.

    Решение 1: мне просто надо было проверять это начало дня или нет. Я хотел конвертировать время в строку и проверять содержит ли строка "00:00:00". Но тогда способа не нашел, и придумалось простое и красивое решение. Так как timestamp тоже начинается с 00 часов, а известно что в сутках 86400 секунд, то надо просто разделить 86400, и проверить целое ли получилось число.

    PHP код:
    $timestamp 1536606269
    $num 
    $timestamp 86400;
    if (
    if_integer($num) == true
    Но потом в другом месте выяснилось (в полной жопе) что надо будет всё равно получать час.

    Решение 2: Тогда можно создать новую дату, и вбить туда 1970 год (с этого года стартует timestamp же). Причем месяц и день вбивать не обязательно, оно там автоматом само нахуевертится как надо. Ну а потом добавить к этой дате такое количество секунд, которое содержится в timestamp. В итоге получено то что надо.

    PHP код:
    $timestamp 1536606269;
    $date Time::of(["year" => 1970])->add(["sec" => $timestamp]); 
    Ну вот софтину допишу и продам Цукербергу за 5% акций фейсбука, всем привет.
    Последний раз редактировалось Robodel; 10.09.2018 в 23:14.

  6. #6
    Аватар для PiEy PiEy Очень опасный тип PiEy Очень опасный тип PiEy Очень опасный тип Путешественник
    Сообщений
    428
    Поблагодарили 40 раз(а) в 40 сообщениях
    А следом, берешь переписываешь https://github.com/php/php-src/blob/...p_date.c#L1319

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения