最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - setHours() convert my Date object in string timestamp - Stack Overflow

programmeradmin2浏览0评论

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
Add a ment  | 

3 Answers 3

Reset to default 5

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.

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});
发布评论

评论列表(0)

  1. 暂无评论