Многие решения здесь не учитывали округление. Например:
Событие произошло в 3 часа дня два дня назад. Если вы проверяете в 2 часа дня, он будет показан один день назад. Если вы проверяете в 4 часа дня, он будет показан два дня назад.
Если вы работаете с временем unix, это помогает:
// how long since event has passed in seconds
$secs = time() - $time_ago;
// how many seconds in a day
$sec_per_day = 60*60*24;
// days elapsed
$days_elapsed = floor($secs / $sec_per_day);
// how many seconds passed today
$today_seconds = date('G')*3600 + date('i') * 60 + date('s');
// how many seconds passed in the final day calculation
$remain_seconds = $secs % $sec_per_day;
if($today_seconds < $remain_seconds)
{
$days_elapsed++;
}
echo 'The event was '.$days_ago.' days ago.';
Это не идеально, если вы беспокоитесь о прыжок секунд и летнее время.
Нет никакого преимущества в выполнении этого. Просто запишите универсальный заголовок сценария, который объясняет вариант использования:
Scenario Outline: Navigating to the home page
Given I navigate to <Application>
Then I should see Home page
Examples:
| Application |
| Stack Overflow |
| Math Overflow |
SpecFlow добавит тестовое имя с данными из первого столбца Вашей таблицы в качестве примера: