Я работаю над угловым проектом, где часто использую JavaScript < /p>
new Date()
< /code>
Функция. У нас есть новое требование, чтобы изменить часовой пояс каждой даты, чтобы соответствовать часовому поясу, указанному в профиле учетной записи пользователя, независимо от местоположения пользователя. Чтобы достичь этого, я создал повторную функцию, которая настраивает часовой пояс даты. Ниже приведена реализация: < /p>
newTimezoneDate(dateVal?: any): Date {
let timeZone: string | null = this.configService.getFacilityTimeZone();
if (!timeZone) {
timeZone = localStorage.getItem(facilityTimezone);
}
let date = new Date();
if (dateVal) {
date = new Date(dateVal);
}
if (!timeZone) {
return date; // Return the date object if no timezone is provided
}
// Convert the date to the specified timezone
const formattedDate = this.formatDateToTimeZone(date, timeZone);
return formattedDate; // Return the converted date
}
formatDateToTimeZone(date: Date, timeZone: string) {
try {
return new Date(date.toLocaleString('en-US', { timeZone }));
} catch (error) {
// If an error occurs, use the default user's timezone
return date;
}
}
< /code>
Проблема < /strong>
функция работает, как и ожидалось, но я сталкиваюсь с проблемой, когда я передаю дату, которая уже была создана с использованием этой функции. В таких случаях я получаю неверные значения даты.
Вопрос
Как я могу изменить функцию newtimezedate () для правильной обработки дат, которая уже была преобразована в указанный часовой зону? Есть ли способ проверить, будет ли проходящая дата уже в правильном часовом поясе, поэтому я могу избежать ненужных преобразований?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... e-function