To ensure compatibility with SQL Server, you should use IANA timezone IDs (like "Asia/Kathmandu"), which are recognized by both JavaScript and SQL Server. In JavaScript, you can get the user's timezone like this:
const timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log(timeZoneName); // Outputs something like "Asia/Kathmandu"
This gives you a reliable and valid timezone ID.
Once you have a valid timezone ID, pass it to your SQL procedure to handle the conversion. Here’s how the query should look:
SELECT DateUtc AT TIME ZONE 'UTC' AT TIME ZONE @TimeZoneName AS dateTimeCreated
Make sure @TimeZoneName contains a valid timezone ID like the one from JavaScript.
If you’re displaying dates directly in the browser, you can skip the server-side conversion and handle it all in JavaScript. Just send the UTC date in ISO 8601 format (e.g., "2024-11-19T10:34:14.682Z") and let JavaScript handle the conversion:
const date = new Date("2024-11-19T10:34:14.682Z");
console.log(date.toLocaleString()); // Converts to the user's local timezone
This approach is simpler if you don’t need to worry about timezone consistency across different users.
Let me know if you need further clarification