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 :)
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 :)
Share Improve this question asked Oct 24, 2015 at 0:22 Jack NUMBERJack NUMBER 4461 gold badge5 silver badges22 bronze badges 3- 1 stackoverflow./questions/1050720/… is smiliar but doesn't provide answer. – Jack NUMBER Commented Oct 24, 2015 at 0:22
-
Why not just use the
now
objected you created? – Griffith Commented Oct 24, 2015 at 0:24 - So what is the actual question? What exactly you want to fix? How an objective answer can be given to a question "is it normal" unless one is a psychiatrist? – Oleg Sklyar Commented Oct 24, 2015 at 0:28
3 Answers
Reset to default 5Is 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.
I had a similar situation and pcnate answer didn't solved my issue...
What I did was:
var today = new Date();
today = new Date(today.setHours(0,0,0,0));
console.log('Date: '+today);
You can manipulate dates easily using datejs or momentjs
date.js:
Date.today().set({ hour : 0 });
moment.js
moment().set({ "hour": 0, "minute" : 0, "second": 0});