javascript - date.setHours() nu funcționează
Încerc să scad ore dintr-un șir de dată și oră dat folosind JavaScript. Codul meu este așa:
var cbTime = new Date();
cbTime = selectedTime.setHours(-5.5);
Unde selectedTime este timpul dat (timpul pe care îl trec ca parametru).
Deci să presupunem că selectedTime este Tue Sep 16 19:15:16 UTC+0530 2014 și răspunsul pe care îl obțin este: 1410875116995
Vreau un răspuns în format datetime. Fac ceva greșit aici? Sau există vreo altă soluție?
Răspuns #1
Motivul este că setHours(), setMinutes() etc., iau un Integer ca parametru. Din documentație:
...
Metoda
setMinutes()setează minutele pentru o dată specificată conform orei locale....
Parametri:
Un număr întreg între 0 și 59, reprezentând minutele.
Așadar, ai putea face asta:
var selectedTime = new Date(),
cbTime = new Date();
cbTime.setHours(selectedTime.getHours() - 5);
cbTime.setMinutes(selectedTime.getMinutes() - 30);
document.write('cbTime: ' + cbTime);
document.write('<br>');
document.write('selectedTime: ' + selectedTime);Răspunsul #2
Ei bine, mai întâi, setarea orelor la -5.5 este lipsită de sens, codul va trunchia la un număr întreg (-5) și apoi va lua asta ca „cinci ore înainte de miezul nopții”, adică ora 19:00 ieri.
În al doilea rând, setHours (și alte funcții similare) modifică obiectul Date (încearcă console.log(cbTime)) și returnează timestamp-ul (numărul de milisecunde de la epoch).
Nu ar trebui să te bazezi pe formatul de ieșire al browserului care convertește obiectul Date într-un șir pentru tine și ar trebui în schimb să folosești funcțiile get*() pentru a-l formata tu însuți.
