mirror of
https://github.com/pds-nest/nest.git
synced 2024-11-22 04:54:18 +00:00
✨ Create convertToLocalISODate function
This commit is contained in:
parent
f24799f473
commit
3bdbcb2951
1 changed files with 30 additions and 0 deletions
30
code/frontend/src/utils/convertToLocalISODate.js
Normal file
30
code/frontend/src/utils/convertToLocalISODate.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
// Wow, JS, davvero?
|
||||
// Davvero tutte le date.toISOString() sono considerate UTC?
|
||||
// Wow.
|
||||
|
||||
/**
|
||||
* Convert a {@link Date} object to a timezone aware ISO String, using the user's local timezone.
|
||||
*
|
||||
* @param date
|
||||
* @returns {string}
|
||||
*/
|
||||
export default function convertToLocalISODate(date) {
|
||||
if(date.toString() === "Invalid Date") {
|
||||
throw new Error("Received an Invalid Date as parameter.")
|
||||
}
|
||||
|
||||
// Create a timezone naive ISO string
|
||||
const naive = date.toISOString()
|
||||
|
||||
// Find the local timezone
|
||||
const tz = - new Date().getTimezoneOffset()
|
||||
|
||||
// Convert the timezone to hours
|
||||
const tzHours = Math.abs(Math.floor(tz / 60)).toString().padStart(2, "0")
|
||||
|
||||
// Find the minutes
|
||||
const tzMinutes = (tz % 60).toString().padStart(2, "0")
|
||||
|
||||
// Replace the naive part with the aware part
|
||||
return naive.replace("Z", `${tz < 0 ? "-" : "+"}${tzHours}${tzMinutes}`)
|
||||
}
|
Loading…
Reference in a new issue