2
Try this:
document.addEventListener("DOMContentLoaded", function () {
const utcDateElements = document.querySelectorAll('.date-utc');
console.log("utcDateElements", utcDateElements);
utcDateElements.forEach(function (element) {
const utcDateString = element.getAttribute('data-utc-date');
console.log("utcDateString", utcDateString);
const utcDate = new Date(utcDateString);
const localDateString = new Intl.DateTimeFormat(undefined, {
dateStyle: 'full',
timeStyle: 'medium'
}).format(utcDate);
console.log("localDateString", localDateString);
element.textContent = localDateString;
});
});
See this js<>fiddle: https://jsfiddle.net/jdcykgzw/
2
The issue you’re facing might be due to the date format you’re using. JavaScript’s Date
object can be inconsistent when parsing date strings, especially when the date string format is not standard12.
In your case, the date string format 05-01-2024 12:03:54
seems to be DD-MM-YYYY HH:MM:SS
. However, JavaScript’s Date
object expects the date string to be in a format that it can parse correctly. The safest format to use is the ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ
13.
Here’s how you can modify your code to handle this:
document.addEventListener("DOMContentLoaded", function () {
const utcDateElements = document.querySelectorAll('.date-utc');
utcDateElements.forEach(function (element) {
const utcDateString = element.getAttribute('data-utc-date');
const dateParts = utcDateString.split(' ')[0].split('-');
const timePart = utcDateString.split(' ')[1];
const utcDate = new Date(`${dateParts[2]}-${dateParts[1]}-${dateParts[0]}T${timePart}Z`);
element.textContent = utcDate.toLocaleString();
});
});
In this code, I’ve modified the date string to be in the ISO 8601 format before passing it to the Date
constructor. This should help ensure that the date string is parsed correctly across different environments13.
Please note that this code assumes that the date and time are in UTC. If they’re not, you’ll need to adjust the code accordingly13.
If you’re still facing issues, it would be helpful to check if the date string is valid before trying to convert it. You can use isNaN(Date.parse(yourDateString))
to check if the date string is valid2. If this returns true
, then the date string is invalid2.
Thanks

1
Check this code
document.addEventListener("DOMContentLoaded", function () {
const utcDateElements = document.querySelectorAll('.date-utc');
console.log("utcDateElements", utcDateElements);
utcDateElements.forEach(function (element) {
const utcDateString = element.getAttribute('data-utc-date');
console.log("utcDateString", utcDateString);
// Parsing the UTC date string with the specific format
const dateParts = utcDateString.split(' ')[0].split('-'); // Splitting date part only
const timeParts = utcDateString.split(' ')[1].split(':'); // Splitting time part only
// Creating a Date object using the parsed date and time
const utcDate = new Date(
parseInt(dateParts[2]),
parseInt(dateParts[1]) - 1, // Month is zero-based in JavaScript Date object
parseInt(dateParts[0]),
parseInt(timeParts[0]),
parseInt(timeParts[1]),
parseInt(timeParts[2])
);
// Converting UTC to local time
const localDate = new Intl.DateTimeFormat('default', {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
timeZone: 'UTC' // Assuming the input is in UTC
}).format(utcDate);
console.log("localDate", localDate);
element.textContent = localDate;
});
});

0
Test this
var dateString = "05-01-2024 12:03:54";
var parts = dateString.split(/[- :]/);
var formattedDate = new Date(parts[2], parts[1] - 1, parts[0], parts[3], parts[4], parts[5]);
var localizedDateString = formattedDate.toLocaleString();
console.log(localizedDateString);
-1
Tech Writer 2.5k 142.7k 1y what if when sever sent the date in 1/25/2024 12:03:54 PM, this format
document.addEventListener("DOMContentLoaded", function () {
const utcDateElements = document.querySelectorAll('.date-utc');
console.log("utcDateElements", utcDateElements);
utcDateElements.forEach(function (element) {
const utcDateString = element.getAttribute('data-utc-date');
console.log("utcDateString", utcDateString);
const dateTimeParts = utcDateString.split(' ');
const dateParts = dateTimeParts[0].split('-');
const timeParts = dateTimeParts[1].split(':');
const utcDate = new Date(
parseInt(dateParts[2]),
parseInt(dateParts[1]) - 1,
parseInt(dateParts[0]),
parseInt(timeParts[0]),
parseInt(timeParts[1]),
parseInt(timeParts[2])
);
console.log("utcDate", utcDate);
element.textContent = utcDate.toLocaleString();
});
});
this method give me invaild
i want to method that is independet for all
-2
The "invalid date" error typically occurs when the JavaScript Date
constructor is unable to parse the provided date string. In your case, the datetime format received from the server is "05-01-2024 12:03:54".
To resolve the issue, you need to modify the code to handle this datetime format correctly. One way to achieve this is by splitting the datetime string into separate date and time parts, and then constructing the Date
object using the appropriate parts.
Here's an updated version of your code that handles the datetime format "05-01-2024 12:03:54":
document.addEventListener("DOMContentLoaded", function () {
const utcDateElements = document.querySelectorAll('.date-utc');
console.log("utcDateElements", utcDateElements);
utcDateElements.forEach(function (element) {
const utcDateString = element.getAttribute('data-utc-date');
console.log("utcDateString", utcDateString);
const dateTimeParts = utcDateString.split(' ');
const dateParts = dateTimeParts[0].split('-');
const timeParts = dateTimeParts[1].split(':');
const utcDate = new Date(
parseInt(dateParts[2]),
parseInt(dateParts[1]) - 1,
parseInt(dateParts[0]),
parseInt(timeParts[0]),
parseInt(timeParts[1]),
parseInt(timeParts[2])
);
console.log("utcDate", utcDate);
element.textContent = utcDate.toLocaleString();
});
});
In this updated code, we first split the datetime string into separate date and time parts using the space character as the delimiter. Then, we further split the date and time parts into their respective components (day, month, year, hour, minute, second). Finally, we construct the Date
object using the parsed components.
By making these modifications, the code should now be able to handle the datetime format "05-01-2024 12:03:54" correctly and display the local date and time on the staging environment without any "invalid date" errors.
