Как мне минус один месяц с года-месяц 2019-03

При выполнении инструкции DML вы должны использовать executeUpdate / execute, а не executeQuery.

Вот краткое сравнение:

5
задан Danish Ali 5 March 2019 в 05:26
поделиться

4 ответа

Вы можете попробовать следующее решение:

date('Y-m', strtotime($payroll['month'] . ' - 1 month'))
0
ответ дан Ankur Tiwari 5 March 2019 в 05:26
поделиться

Здесь так много хороших ответов.

Просто отметьте, что это можно сделать с помощью класса PHP DateTime .

$date = new DateTime("2019-03-03");
$date->sub(new DateInterval('P1M')); // P -> Period 1 Month
echo $date->format("Y-m")
// Outputs: 2019-02

Краткая заметка из официальной документации strtotime () .

Примечание. Использование этой функции для математических операций не рекомендуется. Лучше использовать DateTime :: add () и DateTime :: sub () в PHP 5.3 и более поздних версиях, либо DateTime :: modify () в PHP 5.2.

0
ответ дан Pupil 5 March 2019 в 05:26
поделиться

Вы можете добавить еще один strtotime, чтобы получить желаемый результат

$payroll['month'] = "2019-03";
echo $payroll['month'];
echo $newdate = date("Y-m", strtotime("-1 months", strtotime($payroll['month'])));

Еще один способ сделать то же самое:

date('Y-m', strtotime($payroll['month'] . '-1 months'))

Это также будет работать для вас. [ 115]

0
ответ дан Ankur Tiwari 5 March 2019 в 05:26
поделиться

Осторожно ... простое добавление или вычитание одного месяца в строке yyyy-mm может привести к неожиданным результатам в некоторых крайних случаях. Бывает, что я использую этот формат на сайте, который я создал (для расчета заработной платы и других вещей), и когда расчет был сделан 28 февраля (IIRC) и других крайних случаях, результат не всегда был таким, каким я его хотел (т.е. , следующий или предыдущий месяц)

Это немного больше кода, но мой совет был бы:

$first_of_month = date('Y-m-01', strtotime($payroll['month']));
$newdate = date('Y-m', strtotime($first_of_month."-1 month"));

Принятие вашего начального значения для полной даты Ymd в первый день месяца (день для вас не имеет значения, так как он используется только для расчета), вы можете быть уверены, что расчет будет правильным каждый раз

0
ответ дан Javier Larroulet 5 March 2019 в 05:26
поделиться
Другие вопросы по тегам:

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