0
Javascript weekday wrong result with Date.getUTCDay(), why?
Hello everybody, as the topic title already said: Why do I get a wrong result with the getUTCDay() method of the Date Object? See code output for details. Many thanks in advance https://code.sololearn.com/WE2UpHFjA2rM/?ref=app
10 Réponses
+ 1
Pete Wright , sorry but I don't understand your point. It's necessary to add 1 in the first case, because you rearrange the order of the days of the week. The "original value" of the method getUTCDay() in the first case is always displaced with one day.
Hope now it is clear for you.
+ 1
It's really strange. Should be checked deeply.
+ 1
I think I figured it out, but I'd like someone to confirm that.
The following should create a new Date (Sunday, 31. of March 2019)
> var d1 = new Date(2019, 2, 31);
But different browsers return different values.
On the latest Mozilla Firefox it returns:
> Date 2019-03-30T23:00:00.000Z
(which is the UTC time)
While the latest Opera Stable (which is my primary browser) returns this:
> Sun Mar 31 2019 00:00:00 GMT+0100 (Central European Standard Time)
Keeping this Offset in mind, I did the following, to make sure that the right day will be returned in all major browsers:
> var d2 = new Date (2019, 2, 31, 12, 0, 0)
This will also set the time to 12:00 (PM) which is the middle of the day (and hopefully the right date)
Now I have some questions:
1. Why do the browsers return different dates and is there anything that can be done to changes this behavior?
2. Is the method listed last (date + time) safe to use in my codes?
3. Will it return the exact same output/date on ALL major browsers?
Many thanks in advance
0
I think I found the error. In line 18 it should be ww[w1]
https://code.sololearn.com/WQY7c78bdVK5/?ref=app
Hope it helps you.
0
TheWhiteCat💡
Thanks for your effort.
I think that is not what I was looking for.
Since w1 = w0 + 1
what means that the actual return value of the getUTCDay() method is being modified!
But the result should be correct with the original return value!
Any ideas?
0
TheWhiteCat💡
The original getUTCDay() will return 0 for "Sunday", 1 for "Monday", 2 for "Tuesday", etc.
Right???
So for the Date "01.01.1970" it should return 4, since the 1st of January 1970 was a Thursday.
Instead, the original method returns 3!!!
Check out my code and press the "weekday 0-6" button. It returns the UNMODIFIED ORIGINAL VALUE of getUTCDay().
But instead of giving me a "4" it just returns "3"
That's what I don't understand.
The other buttons, return values and variables are not important.
0
Now I understand your point. I think I corrected it. Please see the code
https://code.sololearn.com/WQY7c78bdVK5/?ref=app
0
TheWhiteCat💡
eeeerm... what exactly did you change? Could you please comment the changes?
0
In lines 39=> fx = w1 and 42 => fx = w0 of the switch-case construction.
0
TheWhiteCat💡 I see
But that's still wrong, because now the "weekday 1-7" button returns 3, what would be the 3rd day => "Tuesday" (when starting with Sunday)
😭😭😭