date time – SharePoint JSOM datetime values in different timezones

If you are able to incorporate a third-party JavaScript library into your solution, then you can use moment.js with the moment-timezone extension to correct for this issue. As an example:

moment.tz("2016-08-14T22:00:00Z","Europe/Berlin").format("YYYY-MM-DD") // "2016-08-15"

The value "Europe/Berlin" is a reasonable equivalent of "W. Europe Standard Time", including its DST rules. If you need a solution that doesn’t hard-code the time zone, then take a look here.

Also understand that the root cause of the problem is that SharePoint is storing the date-only value as if it were a date-time at midnight in the server’s time zone. Therefore, another way to prevent this issue would be to have the server’s time zone set to UTC, and to avoid UTC-to-local conversion on the client. Of course, this could affect other things if change it after data was already written, so be careful if you go down that route.