Функция, чтобы получить вчера дату в 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(), поэтому ошибка.