Добавление одного дня к дате

Для устранения пустых носителей после удаления:

slist = map(lambda s: s and s.strip(), slist)
slist = filter(None, slist)

Некоторые PROs:

  • ленивы, основанные на генераторах, для сохранения памяти;
  • приличный понятность кода;
  • быстро, выборочно с использованием встроенных функций и понятий.
    def f1(slist):
        slist = [s and s.strip() for s in slist]
        return list(filter(None, slist))
    
    def f2(slist):
        slist = [s and s.strip() for s in slist]
        return [s for s in slist if s]
    
    
    def f3(slist):
        slist = map(lambda s: s and s.strip(), slist)
        return list(filter(None, slist))
    
    def f4(slist):
        slist = map(lambda s: s and s.strip(), slist)
        return [s for s in slist if s]
    
    %timeit f1(words)
    10000 loops, best of 3: 106 µs per loop
    
    %timeit f2(words)
    10000 loops, best of 3: 126 µs per loop
    
    %timeit f3(words)
    10000 loops, best of 3: 165 µs per loop
    
    %timeit f4(words)
    10000 loops, best of 3: 169 µs per loop
    
147
задан Shoaib Quraishi 9 November 2017 в 10:39
поделиться

3 ответа

<?php
$stop_date = '2009-09-30 20:24:00';
echo 'date before day adding: ' . $stop_date; 
$stop_date = date('Y-m-d H:i:s', strtotime($stop_date . ' +1 day'));
echo 'date after adding 1 day: ' . $stop_date;
?>

Для PHP 5.2.0+ вы также можете сделать следующее:

$stop_date = new DateTime('2009-09-30 20:24:00');
echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); 
$stop_date->modify('+1 day');
echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
310
ответ дан 23 November 2019 в 21:48
поделиться

Хотя я согласен с ответом Дуга Хейса, я хочу сказать, что причина, по которой ваш код не работает, заключается в том, что strtotime () ожидает INT в качестве второго аргумента, а не строки (даже той, которая представляет дату)

Если вы включите отчет о максимальных ошибках, вы увидите это как ошибку «Неправильно сформированное числовое значение», что соответствует уровню E_NOTICE.

1
ответ дан 23 November 2019 в 21:48
поделиться

Я всегда просто добавляю 86400 (секунд в день):

$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00") + 86400);

echo 'date after adding 1 day: '.$stop_date; 

Это не лучший способ, но он работает!

2
ответ дан 23 November 2019 в 21:48
поделиться
Другие вопросы по тегам:

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