Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по поводу new Date() (https://javascript.ru/forum/misc/75621-vopros-po-povodu-new-date.html)

Artur_Hopf 25.10.2018 10:12

Вопрос по поводу new Date()
 
Добрый день, подскажите почему меняется дата если прописывать новый параметр в условии if:
var dateString = '2018-25-10 10:10:24'; //некая дата
dateString = new Date(dateString.replace(/(\d+)-(\d+)-(\d+)/, '$3/$2/$1'));
alert (dateString );
if(dateString.setSeconds(dateString.getSeconds() + 60) >= new Date()){

}

alert (dateString ); //почему здесь дата изменилась?


Например, даже если я явно напишу так, почему в dateString дата изменилась, изменялась же только в переменной?

var dateString = '2018-25-10 10:10:24'; //некая дата
dateString = new Date(dateString.replace(/(\d+)-(\d+)-(\d+)/, '$3/$2/$1'));

alert (dateString );

var test = dateString.setSeconds(dateString.getSeconds() + 60);

alert (dateString ); //почему здесь дата изменилась, изменялась же только в переменной?

Как это все исправить, чтобы не менялось изначальное dateString , если я просто прибавляю секунды к этой дате?

И еще вопрос, как сделать чтобы если дату присвоить переменной чтобы оно его не изменяло, остался вид:
Thu Oct 25 2018 10:10:24 GMT+0300 (Москва, стандартное время)
а не:
1540451460000
var dateString = '2018-25-10 10:10:24'; //некая дата
dateString = new Date(dateString.replace(/(\d+)-(\d+)-(\d+)/, '$3/$2/$1'));

alert (dateString );
var test = dateString.setSeconds(dateString.getSeconds() + 60);

alert (test );

laimas 25.10.2018 10:28

Цитата:

Сообщение от Artur_Hopf
почему в dateString дата изменилась

Потому, что dateString = new Date ... И вообще-то https://developer.mozilla.org/ru/doc...cts/Date/parse вместо replace.

Artur_Hopf 25.10.2018 10:43

laimas,
Если так напишу то правильно:
var dateString = '2018-25-10 10:10:24';
dateString  = Date.parse(dateString.replace(/(\d+)-(\d+)-(\d+)/, '$3/$2/$1'));
if(dateString + 60 //так правильно?

Если просто напишу Date.parse(dateString ) прилетит Nan:
var dateString = '2018-25-10 10:10:24';
dateString  = Date.parse(dateString);
alert(dateString  );

Artur_Hopf 25.10.2018 11:49

Написал так, вроде работает
var d1 = '2018-10-25 10:10:24';
d1 = new Date(Date.parse(d1));
alert(d1);
var data1 = d1.setSeconds(d1.getSeconds() + 60);
if(data1 )//как то так


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