date.setHours() not working

后端 未结 5 364
一生所求
一生所求 2021-01-19 08:17

I am trying to subtract hours from a given date time string using javascript. My code is like:

     var cbTime = new Date();    
     cbTime = selectedTime.s         


        
相关标签:
5条回答
  • 2021-01-19 08:54

    Use:

      var cbTime = new Date();
            cbTime.setHours(cbTime.getHours() - 5.5)
            cbTime.toLocaleString();
    
    0 讨论(0)
  • 2021-01-19 09:02

    According to this:

    http://www.w3schools.com/jsref/jsref_sethours.asp

    You'll get "Milliseconds between the date object and midnight January 1 1970" as a return value of setHours.

    Perhaps you're looking for this:

    http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_sethours3

    Edit: If you want to subtract 5.5 hours, first you have to subtract 5 hours, then 30 minutes. Optionally you can convert 5.5 hours to 330 minutes and subtract them like this:

    var d = new Date();
    d.setMinutes(d.getMinutes() - 330);
    document.getElementById("demo").innerHTML = d;
    
    0 讨论(0)
  • 2021-01-19 09:12

    The reason is that setHours(), setMinutes(), etc, take an Integer as a parameter. From the docs:

    ...

    The setMinutes() method sets the minutes for a specified date according to local time.

    ...

    Parameters:

    An integer between 0 and 59, representing the minutes.

    So, you could do this:

    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);

    0 讨论(0)
  • 2021-01-19 09:16

    try this:

     var cbTime = new Date();
        cbTime.setHours(cbTime.getHours() - 5.5)
        cbTime.toLocaleString();
    
    0 讨论(0)
  • 2021-01-19 09:18

    Well first off setting the hours to -5.5 is nonsensical, the code will truncate to an integer (-5) and then take that as "five hours before midnight", which is 7PM yesterday.

    Second, setHours (and other functions like it) modify the Date object (try console.log(cbTime)) and return the timestamp (number of milliseconds since the epoch).

    You should not rely on the output format of the browser converting the Date object to a string for you, and should instead use get*() functions to format it yourself.

    0 讨论(0)
提交回复
热议问题