16.01.2018, 02:13
|
Новичок на форуме
|
|
Регистрация: 06.01.2018
Сообщений: 8
|
|
изменение времени
Помогите найти ошибки , пожалуйста!!
var time = date('2012-01-11 12:35')
.add(24, 'hours')
.subtract(1, 'months')
.add(3, 'days')
.add(15, 'minutes');
arr = date.split(/[\s:-]/);
objTime = {
newDate: new Date (arr[0], arr[1] - 1, arr[2], arr[3], arr[4]),
add: function (value, string) {
if (value > 0) {
if (string == 'years') {
this.newDate.setFullYear(value + +arr[0]);
return this;
}
else if (string == 'months') {
this.newDate.setMonth(value + +arr[1]);
return this;
}
else if (string == 'days') {
this.newDate.setMonth(arr[1] - 1, value + +arr[2]);
return this;
}
else if (string == 'hours') {
this.newDate.setHours(value + +arr[3]);
return this;
}
else if (string == 'minutes') {
this.newDate.setMinutes(value + +arr[4]);
return this;
} else {
return TypeError('Передано неверное значение')
}
} else {
return TypeError('Передано неверное значение');
}
},
substract: function (value, string) {
if (value > 0) {
if (string == 'years') {
this.newDate.setFullYear(+arr[0] - value);
return this;
}
else if (string == 'months') {
this.newDate.setMonth(+arr[1] - value);
return this;
}
else if (string == 'days') {
this.newDate.setMonth(arr[1] - 1, +arr[2] - value);
return this;
}
else if (string == 'hours') {
this.newDate.setHours(+arr[3] - value);
return this;
}
else if (string == 'minutes') {
this.newDate.setMinutes(+arr[4] - value);
return this;
} else {
return TypeError('Передано неверное значение')
}
} else {
return TypeError('Передано неверное значение');
}
}
}
return objTime.newDate;
|
|
16.01.2018, 06:24
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от dany2855
|
substract(1, 'months')
|
|
|
16.01.2018, 16:19
|
Новичок на форуме
|
|
Регистрация: 06.01.2018
Сообщений: 8
|
|
Спасибо, не заметил.
Но ошибка идет еще раньше, после первого .add не возвращается объект.
"date(...).add is not a function'. В чем может быть проблема?
|
|
16.01.2018, 16:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
dany2855,
function Time(str) {
var objTime = {
init: function(str) {
var arr = str.split(/[\s:-]/);
this.newDate = new Date(Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], 0, 0));
return this;
},
add: function(value, string) {
if (string in this.method) {
return this.setValue(value, this.method[string]);
} else {
throw new Error("Передано неверное значение: " + string);
}
},
method: {
"years": "FullYear",
"months": "Month",
"days": "Date",
"hours": "Hours",
"minutes": "Minutes"
},
setValue: function(value, method) {
this.newDate["setUTC" + method](value + this.newDate["getUTC" + method]());
return this;
},
substract: function(value, string) {
return this.add(-value, string);
},
toString: function() {
return this.newDate.toLocaleString("ru",{timeZone : "UTC"});
},
valueOf: function() {
return +this.newDate
}
};
return objTime.init(str);
};
var str = "2012-01-11 12:35";
var time = new Time(str);
time.add(24, "hours").substract(1, "months").add(3, "days").add(15, "minutes");
alert(time);
alert(+time);
|
|
17.01.2018, 03:36
|
Новичок на форуме
|
|
Регистрация: 06.01.2018
Сообщений: 8
|
|
Рони, спасибо большое очень помогли! Подскажите еще, пожалуйста, как правильно задать формат отображения даты, мой вариант не рабочий(
toString: function() {
return this.newDate.toString.ofPattern("YYYY‒MM‒DD HH:SS",new Locale ("ru"));
},
|
|
17.01.2018, 04:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от dany2855
|
как правильно задать формат отображения даты
|
написать функцию, которая формирует эту строку или не велосипедить
http://momentjs.com/
|
|
17.01.2018, 04:22
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
dany2855,
function Time(str) {
var objTime = {
init: function(str) {
var arr = str.split(/[\s:-]/);
this.newDate = new Date(Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], 0, 0));
return this;
},
add: function(value, string) {
if (string in this.method) {
return this.setValue(value, this.method[string]);
} else {
throw new Error("Передано неверное значение: " + string);
}
},
method: {
"years": "FullYear",
"months": "Month",
"days": "Date",
"hours": "Hours",
"minutes": "Minutes"
},
setValue: function(value, method) {
this.newDate["setUTC" + method](value + this.newDate["getUTC" + method]());
return this;
},
substract: function(value, string) {
return this.add(-value, string);
},
toString: function() {
var year = this.newDate.getUTCFullYear();
var month = this.newDate.toLocaleString("ru",{timeZone : "UTC",month: '2-digit'});
var day = this.newDate.toLocaleString("ru",{timeZone : "UTC",day: '2-digit'});
var time = this.newDate.toLocaleString("ru",{timeZone : "UTC", hour: '2-digit', minute: '2-digit' });
return year + "-" + month + "-" + day + " "+time
},
valueOf: function() {
return +this.newDate
}
};
return objTime.init(str);
};
var str = "2012-01-11 12:35";
var time = new Time(str);
time.add(24, "hours").substract(1, "months").add(3, "days").add(15, "minutes");
alert(time);
alert(+time);
|
|
19.01.2018, 05:11
|
Новичок на форуме
|
|
Регистрация: 06.01.2018
Сообщений: 8
|
|
Рони, спасибо, за время, которое вы уделили! не могу разобраться только с еще одним вопросом. Если в задании не строка str. а объект
var str=date("2012-01-11 12:35")
, нужно приводить date к строке через toString?
var str=new String(date);
return str.toString();
Заранее большое спасибо!
|
|
19.01.2018, 05:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
dany2855,
function Time(str) {
var objTime = {
init: function(str) {
if(str instanceof Date) this.newDate = str;
else {
var arr = str.split(/[\s:-]/);
this.newDate = new Date(Date.UTC(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], 0, 0));
}
return this;
},
add: function(value, string) {
if (string in this.method) {
return this.setValue(value, this.method[string]);
} else {
throw new Error("Передано неверное значение: " + string);
}
},
method: {
"years": "FullYear",
"months": "Month",
"days": "Date",
"hours": "Hours",
"minutes": "Minutes"
},
setValue: function(value, method) {
this.newDate["setUTC" + method](value + this.newDate["getUTC" + method]());
return this;
},
substract: function(value, string) {
return this.add(-value, string);
},
toString: function() {
var year = this.newDate.getUTCFullYear();
var month = this.newDate.toLocaleString("ru",{timeZone : "UTC",month: '2-digit'});
var day = this.newDate.toLocaleString("ru",{timeZone : "UTC",day: '2-digit'});
var time = this.newDate.toLocaleString("ru",{timeZone : "UTC", hour: '2-digit', minute: '2-digit' });
return year + "-" + month + "-" + day + " "+time
},
valueOf: function() {
return +this.newDate
}
};
return objTime.init(str);
};
//var str = "2012-01-11 12:35";
var str = new Date(Date.UTC(2012, 0, 11, 12, 35, 0, 0))
var time = new Time(str);
time.add(24, "hours").substract(1, "months").add(3, "days").add(15, "minutes");
alert(time);
alert(+time);
|
|
|
|