Можно ли комбинировать сокращенную нотацию с регулярными обозначениями?
blockquote>Да. Определение свойства может быть любым из следующих:
PropertyDefinition : IdentifierReference CoverInitializedName PropertyName : AssignmentExpression MethodDefinition
Источник: Спецификация языка ECMAScript 2015
И если да, есть ли какие-либо gotchas, о котором я должен знать?
blockquote>Нет.
Хм, может быть что-то вроде этого;
echo date("F 1, Y", strtotime("-6 months"));
РЕДАКТИРОВАТЬ;
, если вы хотите указать пользовательское использование даты;
echo date("F, 1 Y", strtotime("-6 months", strtotime("Feb 2, 2010")));
Немного хакерский, но работает:
<?php
$date = new DateTime("-6 months");
$date->modify("-" . ($date->format('j')-1) . " days");
echo $date->format('j, F Y');
?>
используют комбинацию mktime
и date
:
$date_half_a_year_ago = mktime(0, 0, 0, date('n')-6, 1, date('y'))
, чтобы сделать новую дату относительно данной даты, а не сегодня, вызовите date
со вторым параметром
$given_timestamp = getSomeDate();
$date_half_a_year_ago = mktime(0, 0, 0, date('n', $given_timestamp)-6, 1, date('y', $given_timestamp))
, чтобы вывести его в формате, просто снова используйте date
:
echo date('F j, Y', $date_half_a_year_ago);
Это обсуждалось в комментариях, но в принятом ответе есть несколько ненужных strtotime()
вызовов. Можно упростить до:
date("F 1, Y", strtotime("Feb 2, 2010 - 6 months"));
Кроме того, вы можете использовать DateTime()
, как это, что я думаю, в равной степени читабельны:
(new DateTime('Feb 2, 2010'))->modify('-6 months')->format('M 1, Y');
Или используя статический метод ....
DateTime::createFromFormat('M j, Y','Feb 2, 2010')
->modify('-6 months')
->format('M 1, Y');