Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setHours() convert my Date object in string timestamp

I try to set a date to midnight to simplify my date manipulation, for this I wrote this part of code:

var now = new Date();
today = now.setHours(0,0,0,0);
console.log(now, today);

I'm surprised to see now contains a Date object and today a timestamp. This brings errors when I want to use getMonth() or other date's functions. It's paintful to recreate a Date object with the timestamp.

Is it normal? How can I fix this?

(Feel free to update my post to correct my bad english :)

like image 630
Jack NUMBER Avatar asked Oct 24 '15 00:10

Jack NUMBER


People also ask

What does setHours return?

The setHours() method sets the hours for a specified date according to local time, and returns the number of milliseconds since January 1, 1970 00:00:00 UTC until the time represented by the updated Date instance.

How do I turn a timestamp into a date?

You can simply use the fromtimestamp function from the DateTime module to get a date from a UNIX timestamp. This function takes the timestamp as input and returns the corresponding DateTime object to timestamp.

How do you set time on a date object?

setTime() The setTime() method sets the Date object to the time represented by a number of milliseconds since January 1, 1970, 00:00:00 UTC.


1 Answers

Is it normal?

Yes

How can I fix this?

You are assigning the return value of now.setHours(0,0,0,0)to today.

Maybe what you are looking for is something like this:

var now = new Date();

var today = new Date();
today.setHours(0,0,0,0);

In this way, setHours is acting upon the value you wish to have the hours set on. This is the primary manner of using setHours.

Other details

  • The specification doesn't appear to mention the return value. Other sites such as w3schools do.
  • The Chromium setHours source shows a value being return though other functions that perform similarly do not return this value. I presume that the SET_LOCAL_DATE_VALUE function found in chromium's date.js is assigning the value into the first argument.
like image 194
pcnate Avatar answered Nov 14 '22 23:11

pcnate