Как установить DATETIME в метку времени UNIX в полночь? [Дубликат]

Создание http-вызова в угловом / javascript - это асинхронная операция. Поэтому, когда вы делаете http-вызов, он назначит новый поток для завершения этого вызова и начнет выполнение следующей строки с помощью другого потока. Вот почему вы получаете неопределенное значение. поэтому сделайте ниже изменение, чтобы разрешить это

this.es.getEventList()  
      .subscribe((response)=>{  
       this.myEvents = response;  
        console.log(this.myEvents); //<-this become synchronous now  
    });
88
задан user1701398 29 October 2012 в 23:16
поделиться

6 ответов

$timestamp = strtotime('today midnight');

Вы можете посмотреть, что может предложить PHP: http://php.net/datetime

177
ответ дан hakre 22 August 2018 в 17:02
поделиться
  • 1
    Должен признать, это гораздо легче читать, чем мой ответ. Отлично. – SamHuckaby 29 October 2012 в 23:28
  • 2
    @SamHuckaby: Это еще проще: $timestamp = strtotime('today'); - полночь. Но pssst одно выше выглядит более холодным как ответ на вопрос;) – hakre 29 October 2012 в 23:30
  • 3
    Мне действительно нужно начать сегодня и сегодня полночь. Как я могу начать сегодня, я имею в виду 00:00:00 – Happy Coder 22 November 2013 в 11:23
  • 4
    @AlwinAugustin: Вы должны подумать о том, чтобы отличать вашу формулировку. Полночь технически между двумя днями. Таким образом, в настоящее время нет «уже нет». Также: Сегодняшний день (за определение) - это (прямо перед) начало сегодняшнего дня. Вероятно, вы означаете следующую полночь после сегодняшнего дня noon . – hakre 22 November 2013 в 11:58
  • 5
    @BoazRymland: Или просто используйте tomorrow ;) – hakre 25 June 2015 в 11:02

$midnight = strtotime('midnight');. Вы также можете попробовать strtotime('12am') или strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]'). Я пропустил добавление сегодня до полуночи, потому что сегодня по умолчанию.

0
ответ дан Alejandro 22 August 2018 в 17:02
поделиться
  • 1
    Я предлагаю обернуть код в форматировании кода StackOverflow для удобства чтения. – Collin M. Barrett 30 May 2018 в 13:55

Сегодня в полночь. Легко.

$stamp = mktime(0, 0, 0);
15
ответ дан bearcat 22 August 2018 в 17:02
поделиться

Я думаю, что вы должны использовать новый объект PHP DateTime, поскольку у него нет проблем с датами, выходящими за пределы 32-битных ограничений, которые имеет strtotime (). Вот пример того, как вы получите сегодняшнюю дату в полночь.

$today = new DateTime();
$today->setTime(0,0);

Или, если вы используете PHP 5.4 или новее, вы можете сделать это следующим образом:

$today = (new DateTime())->setTime(0,0);

Затем вы можете использовать echo $today->format('Y-m-d');, чтобы получить формат, который вы хочу, чтобы ваш объект выводился как.

PHP DateTime Object

57
ответ дан Joe Meyer 22 August 2018 в 17:02
поделиться
  • 1
    Я также предпочитаю использовать новый объект DateTime. Если вы объедините этот ответ с @ hakr, вы получите: new DateTime('today midnight'), что делает намерение более ясным (но это, конечно, вопрос вкуса). – Martijn 22 November 2014 в 11:23
  • 2
    Я занимаюсь работой ORM SQL, и мне пришлось использовать объект DateTime для сравнения. Это именно то, что я искал. +1 – NobleUplift 10 January 2015 в 00:00
  • 3
    Может быть $today = new DateTime('today') – ProgZi 10 July 2016 в 22:02
  • 4
    Также полезно, если вы используете Carbon, который наследует от DateTime. Таким образом, вы также можете сделать new Carbon('today midnight'), а затем вы можете использовать все материалы Carbon, такие как ->subDays(6). См. carbon.nesbot.com – Christopher K. 28 August 2017 в 14:57
  • 5
    Что касается 32-битного ограничения: документ PHP для состояний strtotime : «Для 64-разрядных версий PHP допустимый диапазон временной метки фактически бесконечен, так как 64 бита могут составлять примерно 293 миллиарда лет в в любом направлении. & quot; Так что это относится только к 32-битной php. – Christopher K. 28 August 2017 в 15:04

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

Опасно? На самом деле это общая проблема, но полный ответ зависит от местоположения:

$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();

Потенциальные определения «здесь» перечислены в https://secure.php.net/manual/en /timezones.php

4
ответ дан Nicolapps 22 August 2018 в 17:02
поделиться
$today_at_midnight = strtotime(date("Ymd"));

должен дать вам то, что вам нужно.

explain

То, что я сделал, это использовать функцию даты PHP для получения сегодняшней даты без любые ссылки на время, а затем передать его функции «строка-время», которая преобразует дату и время в метку времени. Если он не получает времени, он принимает первую секунду этого дня.

Ссылки: Дата Функция: http://php.net/manual/en/function.date.php

Строка времени: http://us2.php.net/manual/en/function.strtotime.php

4
ответ дан SamHuckaby 22 August 2018 в 17:02
поделиться
  • 1
    Отметка времени? Это всего лишь дата. – wesside 29 October 2012 в 23:19
  • 2
    Есть ли определенный формат, который запросил ОП? Если это так, я был бы рад изменить свой пост, чтобы вернуть любой формат, который они хотели бы. – SamHuckaby 29 October 2012 в 23:23
  • 3
    полностью упустил strtotime(), ум был настолько сфокусирован на функции даты. Извиняюсь. – wesside 29 October 2012 в 23:25
  • 4
    @bigman не беспокоится, это случается с лучшими из нас. :) – SamHuckaby 29 October 2012 в 23:27
Другие вопросы по тегам:

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