Функция, чтобы получить вчера дату в Javascript в формате DD/MM/YYYY

Я искал какое-то время, чтобы получить вчера дату в формате DD/MM/YYYY. Вот мой текущий код:

var $today = new Date();
var $dd = $today.getDate();
var $mm = $today.getMonth()+1; //January is 0!

var $yyyy = $today.getFullYear();
if($dd<10){$dd='0'+dd} if($mm<10){$mm='0'+$mm} $today = $dd+'/'+$mm+'/'+$yyyy;

С этим я получаю сегодня дату в формате DD/MM/YYYY (спасибо SO). Но когда я пробую это:

var $yesterday = $today.getDate()-1;

как рекомендовано на этом сайте в другом месте (потерял ссылку), я получаю сообщение об ошибке, что getDate() не найден для этого объекта.

Я использую мой script с Sahi, но я не думаю, что это связано, так как у Sahi нет проблем с Javascript.

Спасибо заранее.

Ответы

Ответ 1

Проблема здесь заключается в том, что вы $today переназначаете $today, присваивая ему строку:

$today = $dd+'/'+$mm+'/'+$yyyy;

Строки не имеют getDate.

Кроме того, $today.getDate()-1 просто дает вам день месяца минус один; это не дает вам полную дату "вчера". Попробуй это:

$today = new Date();
$yesterday = new Date($today);
$yesterday.setDate($today.getDate() - 1); //setDate also supports negative values, which cause the month to rollover.

Затем просто примените код форматирования, который вы написали:

var $dd = $yesterday.getDate();
var $mm = $yesterday.getMonth()+1; //January is 0!

var $yyyy = $yesterday.getFullYear();
if($dd<10){$dd='0'+$dd} if($mm<10){$mm='0'+$mm} $yesterday = $dd+'/'+$mm+'/'+$yyyy;

Из-за последнего оператора $yesterday теперь является Stringне Date), содержащей отформатированную дату.

Ответ 2

Попробуйте следующее:

function getYesterdaysDate() {
    var date = new Date();
    date.setDate(date.getDate()-1);
    return date.getDate() + '/' + (date.getMonth()+1) + '/' + date.getFullYear();
}

Ответ 3

Вы переопределяете $today в инструкции if.

if($dd<10){$dd='0'+dd} if($mm<10){$mm='0'+$mm} $today = $dd+'/'+$mm+'/'+$yyyy;

Это больше не объект Date(), поэтому ошибка.