React : new date() shows date of client machine rather than server [duplicate] - javascript

This question already has answers here:
Which time zone does JavaScript `new Date()` use?
(4 answers)
Closed 4 years ago.
I have a react app running in a server with different locale where I am using
new Date()
When opening app from my client machine it returns the date of client locale instead of server locale ,
Reason ???
let currDate = new Date();

That is how javascript date works. Please refer to MDN docs for Date for more details. Also checkout the the parameters you can send to customize it.
If no arguments are provided, the constructor creates a JavaScript Date object for the current date and time according to system settings for timezone offset
Where Date is called as a constructor with more than one argument, the specified arguments represent local time
The JavaScript Date object supports a number of UTC (universal) methods, as well as local time methods. UTC, also known as Greenwich Mean Time (GMT), refers to the time as set by the World Time Standard. The local time is the time known to the computer where JavaScript is executed.

Related

Moment.js retrieving a different date when using toDate() and format() [duplicate]

This question already has answers here:
Is the Javascript date object always one day off?
(29 answers)
Closed 2 years ago.
I need to get the current date in my TypeScript application. It is now 13:35 for me.
When using moment(Date.now()).toDate() I get the current date, but an hour too early than what I would expect:
"2020-03-26T12:35:12.938Z"
This gives me 12:35.
When using moment(Date.now()).format("DDMMYYYY_HHmm") I get the current date with the hour I am expecting: "26032020_1335"
This gives me 13:35.
What am I missing here to get the correct date and time?
To be clear, i need a Date object. Not a string.
When you call moment(Date.now()).toDate(), I presume you logged that date to the console. When a date is logged to the console, it displays as an ISO 8601 date, which uses UTC time. So, it is the correct time, just in a different timezone. If you call .toString on the date you should see the correct time for your timezone.

How to Convert datetime from one timezone to another timezone in Javascript? [duplicate]

This question already has answers here:
Convert date to another timezone in JavaScript
(34 answers)
How to initialize a JavaScript Date to a particular time zone
(20 answers)
Closed 3 years ago.
I need to convert from one timezone to another timezone in my project.
I am able to convert from my current timezone to another but not from a different timezone to another.
For example I am in India, and I am able to convert from India to US using Date d=new Date(); and assigning it to a calendar object and setting the time zone.
However, I cannot do this from different timezone to another timezone. For example, I am in India, but I am having trouble converting timezones from the US to the UK.
The easy and fast way is to use an external library. I recommend moment.js. once installed you can convert pretty easily and reliably through their ready-made functions

Date().getTimezoneOffset() in Javascript vs TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow).TotalMinutes in .net server side

I have a javascript function used in my application
Date().getTimezoneOffset();
I need server side function to replace the same. I am using
TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow).TotalMinutes;
Is there any difference between the two, other than -ve and +ve value? Can I use this server side method in place of this javascript function.
According to the Mozilla Developer Docs for JavaScript states,
The getTimezoneOffset() method returns the time zone difference, in
minutes, from current locale (host system settings) to UTC.
The method summary comments for GetUtcOffset in .NET describes
Summary:
Calculates the offset or difference between the time in this time zone and Coordinated Universal Time (UTC) for a particular date and time.
Essentially both do almost the same job, except the .Net returns a TimeSpan object whereas the JavaScript's is just a number (the offset difference in minutes)
The TotalMinutes property value in the TimeSpan object infact returns the same value as JavaScripts'
They are the same except the sign (+/-), but keep in mind:
They both return the current local offset. The offset for some other point in time in the same time zone may be different. See "Time Zone != Offset" in the timezone tag wiki.
"Local" means local to where the code is executing. So in a web application, the server-side code is using the time zone setting of the server. It has no idea about the time zone of your user.

How javascript determines what current date is? [duplicate]

This question already has answers here:
Are Javascript date/time functions dependent on the client machine?
(5 answers)
Closed 8 years ago.
Consider this line of code:
var currentTime = new Date();
Did it look at my IP address? Did it talk to my local machine?
How javascript determines what current time in my time zone is?
Since javascript is a client-side language, the Date() method implemented in the browser is querying the client machine for the current time. If you want a date you can trust, query a server for a timestamp and use that in your calculations.
Relevant answer
The JavaScript parser asks the browser, which asks the computer, which looks it up internally. Most languages have a feature for date/time.
It uses the timezone that's configured in the OS the browser is running on.
The JavaScript Date() function returns number of milliseconds from 1 January, 1970 UTC.
If no arguments are provided to the constructor (new Date()), the constructor creates a Date object for the current time according to your system settings

Create New JavaScript Date Object With Different Timezone During Initialization [duplicate]

This question already has answers here:
How to initialize a JavaScript Date to a particular time zone
(20 answers)
Closed 9 years ago.
I have seen a lot, really a lot of post to find out a solution for my problem, but i couldn't get it, so decided to create a question.
My Question is how do we actually create a new javascript date object in different timezone, not in local timezone
i know we could create local date object and convert it to different timezone in number of ways, but i dont want to convert instead i need to create in specific timezone.
here is simple example for my problem,
Say, user has choosen a timezone "America/New_york", so all the dates in a calendar page will be shown in that timezone.
Now, if we create a event at "05:00 pm" , how do we actually create date with time 5 pm in "America/New_york" timezone,
if we use new Date() (assume browser is in different timezone say "Asia/Kolkata"), then converting it to "America/New_york" will not get "5:00pm" in that timezone , instead it will get corresponding time of "05:00 pm IST" in that timezone which will have different hour & minute value.
Any suggestion would be helpful!
Thanks
The short answer is you can't.
A Date object is just an accessor to the system time settings (so it will use the local computer timezone anyway). You can then manipulate your dates by substracting the local timezone using getTimezoneOffset(), or forcing a time with setUTCHours().
Note that moment.js is a good alternative to handle dates and timezones: http://momentjs.com/

Categories

Resources