Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Прибавить к дате 7 дней (https://javascript.ru/forum/misc/41041-pribavit-k-date-7-dnejj.html)

tzarek 29.08.2013 12:09

Прибавить к дате 7 дней
 
Подскажите, пожалуйста, как к дате в виде строки dd/mm/yyyy прибавить 7 дней и опять вывести ее в строку в таком же формате. Желательно конечно с помощью типа Дата это все сделать.

animhotep 29.08.2013 12:22

добавить дней так
var today = new Date(),
     inWeek = new Date();
inWeek.setDate(today.getDate()+7);
alert("сегодня: "+today+" Через неделю: "+inWeek);

tzarek 29.08.2013 12:53

Это конечно работает, но на входе имеется именно текстовая строка в виде dd/mm/yyyy и на выходе нужно иметь такую же(

tzarek 29.08.2013 12:54

а Date.parse() к такой строке не получается почему то применить, только к строке вида mm/dd/yyyy(

рони 29.08.2013 13:14

tzarek,
:cray:
function get(data)
{
   data = data.split('/');
   data = new Date(data[2], +data[1]-1, +data[0], 168, 0, 0, 0);
   data = [data.getDate(),data.getMonth()+1,data.getFullYear()];
   data = data.join('/').replace(/(^|\/)(\d)(?=\/)/g,"$10$2");
   return data
}
alert(get("29/08/2013"));

tzarek 29.08.2013 13:33

Спасибо огромное!!! Подскажите новичку еще, пожалуйста, а в этой функции где мы 7 дней прибавляем? И как можно изменять количество прибавляемых дней?

tzarek 29.08.2013 13:34

Как я понял, как раз 168 это количество прибавляемых часов?

рони 29.08.2013 13:46

tzarek,
168 - да часы и более правильная версия
function get(data, day)
{
   data = data.split('/');
   data = new Date(data[2], +data[1]-1, +data[0]+day, 0, 0, 0, 0);
   data = [data.getDate(),data.getMonth()+1,data.getFullYear()];
   data = data.join('/').replace(/(^|\/)(\d)(?=\/)/g,"$10$2");
   return data
}
alert(get("29/08/2013", 7));

tzarek 29.08.2013 14:17

Огромнейшее спасибо)

AtomicJ 13.02.2015 16:02

Не стал создавать новую тему, т.к. вопрос близок с этой.

В общем, нужно в разных местах сайта выводить даты, отличающиеся от текущей на несколько дней (в разные стороны). И это разница в разных местах разная и задается при вызове функции.

На основе вышеприведенных примеров написал код, но он не работает((
<html> 
    <head>
    <script type="text/javascript">
		function get(dday) {
			var today = new Date(),
     newdate = new Date();
newdate.setDate(today.getDate()+dday);
alert("сегодня: "+date.getDate(date)+" Через " +ddate+ ": "+date.getDate(newdate));
return date.getDate(newdate);
}
	</script>
    </head>
    <body>
    <script  type="text/javascript">document.write(get(-7));</script><br>
<script  type="text/javascript">document.write(get(5));</script>


Изначально код был такой,

<script type="text/javascript">
		function getMonth(date) {
			var month = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'] ;
			return month[ date.getMonth() ];
		}
		var date = new Date();
		date.setDate(date.getDate() + 3);
		bf=getMonth(date);
	</script>


а выводилось так:
<script  type="text/javascript">document.write(date.getDate() + " " + bf);</script>

Но здесь дата задается фиксированно, и в разных местах разные даты уже не поставить.

Нужно в таком-же формате (число и месяц) выводить данные несколько раз с разницей от текущей даты.

Подскажите пожалуйста, что не так в моем коде. Спасибо.

рони 13.02.2015 16:32

Цитата:

Сообщение от AtomicJ
что не так в моем коде

несуществующие переменные в строках 8 и 9

рони 13.02.2015 16:44

AtomicJ,
:(
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
function get(dday) {
 var    newdate = new Date();
     newdate.setDate(newdate.getDate()+dday);
return newdate.getDate() + ' '+['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'][newdate.getMonth()];
}
  </script>
</head>
<body>
<script  type="text/javascript">document.write(get(-7));</script><br>
<script  type="text/javascript">document.write(get(5));</script>
</body>
</html>

AtomicJ 13.02.2015 16:56

Цитата:

Сообщение от рони (Сообщение 356546)
AtomicJ,
:(

Спасибо большое! :) :victory: :dance: :victory:


Часовой пояс GMT +3, время: 12:48.