Как я узнаю, что время истекло / истекло в php? - PullRequest
0 голосов
/ 04 марта 2011

Вот сценарий

Я хотел бы знать, будет ли дата, например, '2011-03-04' и время, например '17: 06: 00 'в определенных часовых поясах, таких как 'IST / PDT / CDT' , с помощью php?

Есть ли какая-либо функция для проверки этого

 $strDate = '2011-03-04 17:06:00';
 $TZ      = 'IST';

 $strDate = '2011-02-01 11:16:30';
 $TZ      = 'CDT';

 $strDate = '2010-08-04 07:20:00';
 $TZ      = 'IST';

 $strDate = '2011-02-27 09:55:00';
 $TZ      = 'PST';

Я пробовал / искал по всей сети, но без радости, пожалуйста, помогите

Да, я пробовал с помощью DateTime , но у меня он не работает .. Мой сервер находится в IST TimeZone

$date = new DateTime('2011-03-04 17:06:00');
$date->setTimeZone(new DateTimeZone("PST"));
$newtime = $date->getTimestamp();
$time     = time();
if ($time > $usertime) 
    echo 'time passed';
else
    echo 'time NOT passed';

Благодаря tobyS, но он тоже сбился

$elapsedTime = new DateTime(
    '2011-03-04 17:00:00', // I set it to 5PM. Now the time is 5:45 PM here in INDIA
    new DateTimeZone( 'IST' )
);

$elapsedInt = $elapsedTime->diff( new DateTime() );
echo ( $elapsedInt->invert ? 'Future' : 'Past' ) . "\n";

Ответы [ 2 ]

1 голос
/ 04 марта 2011

PHP не понимает эти часовые пояса:

$timezone = 'America/New_York';
$date = new DateTime($strDate, new DateTimeZone($timezone));
1 голос
/ 04 марта 2011

Вы можете создать объект DateTime из ваших временных данных и использовать его метод diff () для текущего времени.

Пример кода:

<?php

$elapsedTime = new DateTime(
    '2010-08-04 07:20:00',
    new DateTimeZone( 'IST' )
);

$notElapsedTime = new DateTime(
    '2012-08-04 07:20:00',
    new DateTimeZone( 'IST' )
);

$elapsedInt = $elapsedTime->diff( new DateTime() );

echo ( $elapsedInt->invert ? 'Future' : 'Past' ) . "\n";

$notElapsedInt = $notElapsedTime->diff( new DateTime() );

echo ( $notElapsedInt->invert ? 'Future' : 'Past' ) . "\n";

?>
...