Timezone confusion with date picker and UTC times - json

I have a web page with a DatePicker control (from Kendo UI) on it.
Firstly, I'm in New Zealand, which is UTC +12:00
When I select a date of 31st October 2012 in my date picker, it gets stored in the JavaScript object as:
Wed Oct 31 00:00:00 UTC+1300 2012
This seems wrong!
It gets serialized to JSON (using JSON.stringify) as 2012-10-30T11:00:00.000Z, which is wrong.
Back on the server, when the JSON is parsed, this comes out at 30th October 2012, 23:00.
Can somebody explain this to me? And what is the solution?

I have this figured out now - the date picker control is working correctly, as for the date of October 31st, New Zealand will be in Daylight Savings Time, so at that date, we will be UTC +1300.
My problem is that my server code is converting to UTC on the basis of today's date, rather than using the offset as it would be on the the actual date.

Related

Finding the exact time a webpage was published with source code

Wondering if someone could help me figure out the exact time + time zone a webpage was published.
2021-03-09T19:19:51.815Z
Can someone possible help?
This is an ISO-8601 Date format. It can be split into parts. Since you don't have a language tagged I'm not sure how to tell you to parse it.
2021 is the year
03 is the month (March)
09 is the date (9th day of March)
T indicates the upcoming data is Time, it is always in 24hr clock.
19 is hour (7pm)
19 is the minutes
51 is the seconds
815 is the milliseconds
Z indicates the date and time preceding it are in terms of Coordinated Universal Time (UTC).

new Date() TimeStamp differences between Front-/BackEnd

I'm sending a json body from frontend to my backend, but the timestamp between frontend and backend are different. I'm using new Date().
Output Frontend: Wed Oct 07 2020 10:12:55 GMT+0200 (Central European Summer Time).
Output Backend: "timestamp":"2020-10-07T08:12:43.746Z"
I don't understand, why I get the timestamp wrong in my Backend. The Frontend is sending the correct time.
It is just different time Formating; Your Backend says Year-Month-Day Hours:Minutes:Seconds.Milisecconds
Your Frontend says Dayname Month Day Year Hours+2:Minutes:Secconds

Date-time local sending time from frontend to backend chages automatically and it subtracts the time by 2 hours

I am using the DateTime-local in the HTML field to obtain the datetime from the users. I am sending the same to the backend which I am using to create the XML file. When I send the date to backend it subtracts itself by 2 hours for some reason.
I am not making any changes to it. I am currently in Central European Time (CET), I am guessing its changing automatically to UTC time because CET is 2 hours ahead of UTC. I am just curious to know whats happening here.
I am using the HTML, AngularJS and Nodejs for my project and following are my code samples:
HTML:
<input type="datetime-local" class="form-control" ng-model="formdata.EventTime">
For example, if I selected: 08 October 2020 12:30 PM then after the selection the field would appear something like this: 08/10/2020 12:30
In the AngularJS, just before making the HTTP POST request to my NODE.js I tried to console.log the time and it appeared something like this:
Thu Oct 08 2020 12:30:00 GMT+0200 (Central European Summer Time)
Now finally when I console.log in my Node.js then it appears something like this:
2020-10-08T10:30:00.000Z
I am just curious to know if this is some default functionality?
I could not find similar questions elsewhere so I am posting this.
There's a simple enough reason for the difference. The outputs of both are showing the same instant in time, however the AngularJS log is formatting the date in RFC 2822 format which shows the local timezone, while Node.js is logging the time in UTC formatted as an ISO 8601 time.
If you do this in both AngularJS and Node.js:
console.log(date.toISOString());
You'll get the same output (e.g.)
2020-10-08T10:30:00.000Z
Likewise if you try
console.log(date.toString());
You should get a similar output but in RFC 2822 format (e.g.)
Thu Oct 08 2020 12:30:00 GMT+0200 (Central European Summer Time)
Thanks, #Terry for the response. Based on his answer I did the following, I used the moment to convert my time from UTC to local. My project required me to retain the format of the date and syntax of it.
Install the moment library in Node.js.
When I was selecting 08/10/2020 15:30 in the datetime-local I was getting following date in Node.js:
2020-10-08T13:30:00.000Z
I tried converting it using:
EventTime = moment.utc(EventTime).local().format('YYYY-MM-DDTHH:mm:SS.sss');
Finally I got following output:
2020-10-08T15:30:00.000
I hope if someone else has the same doubt this might help.

primefaces schedule crazy lazy load parameters

I'm using the primefaces schedule component to create a schedule where the timezone is fixed to UTC. So, event times should appear in UTC no matter where the client browser happens to be, and no matter where the server is -- independent of any local time zone.
To do that I set both the timezone and clientTimezone attributes to "UTC".
That all appears to work fine in the displayed view.
I'm also using the lazy loading method where it fetches events from the server when the view changes. So, when I click on the "day" mode, I would expect that the fetch would retrieve events for the selected day, either from midnight to midnight, or maybe minTime to maxTime.
loadEvents now =2017-11-16 03:29:26 +0000 2017-11-16 03:29:26 +0000
loadEvents start=2017-11-15 04:00:00 +0000 2017-11-15 04:00:00 +0000
loadEvents end =2017-11-16 04:00:00 +0000 2017-11-16 04:00:00 +0000
Here, I opened schedule for default date (today), selected day view, and printed out the start/stop time parameters to the loadEvents call.
This shows that current day is nov 16, but the fetch starts at 04:00 the day before, and cuts off at 04:00. Local TZ is UTC-8 (Los Angeles), but I can't see how adding or subtracting that offset arrives at these values.
Is that how it's supposed to work?
I'm using primefaces 6.1.8 under java8/tomcat, jsf2.2

MYSQL qlikview assign variable

Im having problems with this.
I have this qlikview script which is run on the 15th of every month. This script intends to automatically take the last date of the previous month in the format of 'YYYY-MM-DD'.
For example today is 15th January 2017. I will run my script and it will give me a date of 31th December 2016 in the format 2016-12-31.
If it is 15th December 2016, I will get 30th November 2016 in the format 2016-11-30.
I want to set the date retrieved as a variable in the format yyyy-mm-dd to be used in another query.
Basically I tried
SET #vLastDate = DATE_FORMAT(select last_day(curdate() - INTERVAL 1 MONTH), '%Y-%m-%d');
but I receive an error that it does not execute. I am doing this in qlikview. Please help me identify my problem thank you.
You are trying to execute mysql functions in qlikview? That won't work.
Try in QV script:
let vLastDate = MonthEnd(AddMonths(Today(),-1));
If you need to change the date format, play around with the Date#() function, probably something like Date#(Field, 'YYYY-MM-DD'). Today() returns YYYY-MM-DD format so it will probably be fine.