Строка timestamp для int, сделайте DateTime с ним потом в PHP - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу знать, если временная метка, сохраненная в моей базе данных как bigint (я использую mariaDB), уже устарела, сравнивая ее с текущей датой, есть один пример:

У меня эта временная метка хранится вмой db = 1560499685530, но по какой-то причине это строка, когда я выбираю ее из моей базы данных, поэтому я получил эту ошибку при попытке установить его метку времени (setTimestamp ($ timestamp))

DateTime ::setTimestamp () ожидает, что параметр 1 будет целым числом, строка задана

Я пытался использовать intval, но моя метка времени кажется слишком длинной, чтобы быть int, потому что когда я использую inval, он возвращает другойint, меньше моего, я думаю, что это PHP int cap

Я хочу, чтобы мой PHP печатал, если это уже старая дата, сравнивая ее с текущей датой, и написал этот код

$qBloqueo = mysqli_query($conn, "SELECT * FROM dates WHERE idUsuario = '$idUsuario'") or die(mysqli_error($conn));

$timestamp = mysqli_fetch_assoc($qBloqueo);
$timestamp = intval($timestamp['timestamp']); // Getting the timestamp from my db which is a string, still dunno why, in my db it's a bigint

$today = new DateTime();
$expireDate = new DateTime();
$expireDate->setTimestamp($timestamp);

if($today->format("Y-m-d") > $expireDate->format("Y-m-d")) { 
    print('Old date ^u^');
} else {
    print('Not yet');
}

Как я могу использовать временную метку для создания даты obj без int или есть какой-либо способ преобразовать ее из строки в int?Я просто хочу сделать дату из строки времени, чтобы я мог сравнить ее с текущей датой

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Если вы ищете разницу между двумя

<?php 

$time1 = new DateTime('09:00:59');
$time2 = new DateTime('09:01:00');
$interval = $time1->diff($time2);
echo $interval->format('%s second(s)');
?> 

Output :
1 second(s) 

Теперь, чтобы найти разницу между двумя временными метками

/* PHP/5.5.8 and later */
$start = new DateTimeImmutable('2016-04-20 00:37:15');
$end = $start->modify('+7 days');
$diff = $end->diff($start);
print_r($diff);

Output : 
DateInterval Object ( [y] => 0 [m] => 0 [d] => 7 [h] => 0 [i] => 0 [s] => 0 [f] => 0 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 1 [days] => 7 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 ) 

Чтобы преобразовать метку времени в миллисекунду

$yourdate = '2016-03-22 14:30';
$stamp = strtotime($yourdate); // get unix timestamp
$time_in_ms = $stamp*1000;
print_r($time_in_ms);

Output : 
1458657000000

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

0 голосов
/ 25 апреля 2019

Если речь идет только о типе, вы можете ввести переменную приведения типа:

$timestamp = (int) $timestamp['timestamp'];

...