powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (new DateTime(...)) с указанием baseTimestamp
6 сообщений из 6, страница 1 из 1
(new DateTime(...)) с указанием baseTimestamp
    #40095099
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция strtotime (dateTime, baseTimestamp) преобразовывает строковую дату/время в unix timestamp.
При этом вторым параметром можно указать базовый timestamp, который, в частности, будет дополнять отсутствующую часть даты/времени:
Код: php
1.
2.
3.
4.
5.
$out = date('Y-m-d H:i:s', strtotime('20:00:15', time()));		  // "2021-09-03 20:00:15"
$out = date('Y-m-d H:i:s', strtotime('20:00:15', time() - (24 * 3600)));  // "2021-09-02 20:00:15"

$out = date('Y-m-d H:i:s', strtotime('2010-05', time()));		  // "2010-05-01 00:00:00"
$out = date('Y-m-d H:i:s', strtotime('2010-05', time() - (24 * 3600)));	  // "2010-04-30 00:00:00"


Т.е. если строковая дата содержит только время, то она будет дополнено датой из параметра baseTimestamp .
Если же строковая дата содержит только год и месяц, то она будет дополнено числом из параметра baseTimestamp .

Как то же самое реализовать с помощью объекта DateTime ?
Конструктор этого объекта не предусматривает параметра baseTimestamp и всегда дополняет неполную дату/время текущей датой/временем.
...
Рейтинг: 0 / 0
(new DateTime(...)) с указанием baseTimestamp
    #40095762
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cyrax_02,

https://www.php.net/manual/ru/class.datetime.php

DateTime
Код: php
1.
public __construct(string $datetime = "now", ?DateTimeZone $timezone = null)
...
Рейтинг: 0 / 0
(new DateTime(...)) с указанием baseTimestamp
    #40104716
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DHDD
Cyrax_02,
https://www.php.net/manual/ru/class.datetime.php
DateTime
Код: php
1.
public __construct(string $datetime = "now", ?DateTimeZone $timezone = null)


И где вы здесь видите параметр baseTimestamp ?
Лично я вижу только дату/время и часовой пояс...
...
Рейтинг: 0 / 0
(new DateTime(...)) с указанием baseTimestamp
    #40104742
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cyrax_02,

ошибся на timezone...

Код: php
1.
2.
3.
    $baseTimestamp = '2021-09-03 00:00:00';
    $date = new DateTime($baseTimestamp);
    $date->modify('20:00:15');



https://phpsandbox.io/e/x/tlfl0
...
Рейтинг: 0 / 0
(new DateTime(...)) с указанием baseTimestamp
    #40104743
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или в одну строку

Код: php
1.
$date = date_create('2021-09-03 00:00:00')->modify('20:00:15');
...
Рейтинг: 0 / 0
(new DateTime(...)) с указанием baseTimestamp
    #40104754
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваш пример сабжевую задачу не решает.

Например, на входе у нас имеется 2 параметра:
1) неполная дата '2010-05'
2) дата/время, которым необходимо дополнить создаваемый объект DateTime

В итоге необходимо получить:
('2010-05', '2010-08-09 09:05:30') => DateTime с датой/временем "2010-05-09 00:00:00"
('20:00:15', '2010-08-09 09:05:30') => DateTime с датой/временем "2010-08-09 20:00:15"

Т.е. нужен аналог функции strtotime(datetime, baseTimestamp) , но для объекта DateTime .
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (new DateTime(...)) с указанием baseTimestamp
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]