-1

need some help with adding extra time to current time

currentTime= new Date(); 
var hours2 = currentTime.getHours() + 4;
var minutes2 = currentTime.setMinutes(currentTime.getMinutes() + 30);

however it outputs as: 15:1455880112692PM and does not seem to be adding 4.5 hours? anyone have any ideas on this?

James Brandon
  • 1,350
  • 3
  • 16
  • 43

4 Answers4

2

That's because you are not getting the minutes, you are getting the Date object. The setMinutes method doesn't return the minutes, it returns the Date object itself. Converting a Date object to a string to display it gives you the time in milliseconds since epoch.

First convert the time, so that you get a correct time that wraps over, and not something like 27:93 instead of 04:33.

currentTime = new Date();
currentTime.setHours(currentTime.getHours() + 4);
currentTime.setMinutes(currentTime.getMinutes() + 30);

Then you can get the hours and minutes from it:

var hours2 = currentTime.getHours();
var minutes2 = currentTime.getMinutes();

Instead of adding 4 hours and 30 minutes, you can add 270 minutes:

currentTime = new Date();
currentTime.setMinutes(currentTime.getMinutes() + 270);
Guffa
  • 687,336
  • 108
  • 737
  • 1,005
1

I have a few ideas as to what's wrong:

currentTime= new Date(); 
var hours2 = currentTime.getHours() + 4;//doesn't call the setHours method
var minutes2 = currentTime.setMinutes(currentTime.getMinutes() + 30);//works fine for me

So

currentTime= new Date(); 
var hours2 = currentTime.setHours(currentTime.getHours() + 4);//doesn't call the setHours method
var minutes2 = currentTime.setMinutes(currentTime.getMinutes() + 30);//works fine for me

Does work fine, however, you could just do this in a one-liner:

currentTime.setMinutes(currentTime.getMinutes() + 270);
//or in seconds:
currentTime.setSeconds(currentTime.getSeconds() + 270*60);//16200 === 4.5 hrs
//or miliseconds:
currentTime.setTime(currentTime.getTime() + 270*60000);//16200000 === 4.5 hrs
Elias Van Ootegem
  • 74,482
  • 9
  • 111
  • 149
0

You never set the hours. Try:

currentTime= new Date(); 
currentTime.setHours(currentTime.getHours() + 4);
currentTime.setMinutes(currentTime.getMinutes() + 30);
Supr
  • 18,572
  • 3
  • 31
  • 36
0

Try this I really dont see what the problem you are having is? http://jsfiddle.net/H9edz/

currentTime= new Date(); 
var hours2 = currentTime.getHours() + 4;
var minutes2 = currentTime.setMinutes(currentTime.getMinutes() + 30);
document.write("Ending Time: " + currentTime);
document.write("<br/>");
document.write("Ending Minute: " + currentTime.getMinutes());
document.write("<br/>");
var now = new Date();
now.setMinutes(now.getMinutes() + 30);
document.write("Example Time - From Post:" + now)

TheMonkeyMan
  • 8,622
  • 8
  • 27
  • 42