В следующем месяце, тот же день в PHP

Django теперь включает тип UUIDField , так что вам не нужен какой-либо пользовательский код или внешний пакет, предложенный Срикант Чунди. В этой реализации используются строки HEX с черточками, поэтому текст довольно безопасный для детей, кроме 1337 выражений, таких как abad1d3a:)

Вы можете использовать его как псевдоним pk для поля uuid в качестве первичный ключ:

import uuid
from django.db import models

class MyModel(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    # other fields

Обратите внимание, однако, что при маршрутизации к этому представлению в urls.py вам необходимо другое регулярное выражение, как , упомянутое здесь Например:

urlpatterns = [
    url(r'mymodel/(?P[^/]+)/, MyModelDetailView.as_view(),
        name='mymodel'),
]

12
задан Simon East 6 August 2015 в 05:52
поделиться

6 ответов

Как насчет этой функции:

    function getNextMonthN($date, $n = 1) {
      $newDate = strtotime('+' . $n . ' months', $date);
      if (date('j', $date) !== (date('j', $newDate))) {
        $newDate = mktime(0, 0, 0, date('n', $newDate), 0, date('Y', $newDate));
      }
      return $newDate;  
    }

Есть другое решение на Сайт руководства php.net под записью strtotime в комментариях .

0
ответ дан 2 December 2019 в 06:45
поделиться

Обновление:

Это даст вам количество дней в данном месяце:

echo date('t', $timestamp);

См .: date ()

Старый ответ:

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

echo date('d-M-y', strtotime('next month'));
9
ответ дан 2 December 2019 в 06:45
поделиться

Поскольку месяцы очень разные по размеру, не лучший способ установить следующий месяц примерно так: этот день, следующий месяц, если только этот день не существует в следующем месяце.

Пример:

June 5, 2009, next month would be July 5, 2009
August 31, 2009, next month would be September 30, 2009

или просто, strtotime ("+ 1 месяц")

1
ответ дан 2 December 2019 в 06:45
поделиться

Это вернет правильную метку времени для $ X месяцев вперед: mktime (0,0,0, date ("m") + $ X, date ('d'), date ("Y"));

5
ответ дан 2 December 2019 в 06:45
поделиться

Я рекомендую прочитать следующий комментарий на php.net. strtotime () (php.net)

Изменить: следующий ответ дает «сводку» ссылки, которую я разместил для тех, кто не может расшифровать показанный там контент.

2
ответ дан 2 December 2019 в 06:45
поделиться

Пробовали это как шутку, и это действительно работает

strtotime('last day next month')

Итак:

$today_next_month = strtotime('this day next month');
$last_day_next_month = strtotime('last day next month');
if (date('d', $today_next_month) < date('d', $last_day_next_month)){
    $date = date('m-d-Y', $last_day_next_month); 
} else {
    $date = date('m-d-Y', $today_next_month);
}
echo "And the winner is : $date<br/>";
1
ответ дан 2 December 2019 в 06:45
поделиться
Другие вопросы по тегам:

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