Новая дата всегда возвращается на 1 день позже - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть следующий код для новой функции Date () вместе с функцией, которая форматирует новую Date () во что-то более удобное для восприятия:

data.onbCase.push({
                    first_name: onbCase.getDisplayValue('subject_person.first_name'),
                    last_name: onbCase.getDisplayValue('subject_person.last_name'),
                    start_date: formatDate(new Date(onbCase.getDisplayValue('hr_profile.employment_start_date')))   
                });

function formatDate(date) {

    var monthNames = [
        "January", "February", "March",
        "April", "May", "June", "July",
        "August", "September", "October",
        "November", "December"
    ];

    var day = date.getDate(), 
            monthIndex = date.getMonth(),
            year = date.getFullYear();

    return new Date(monthNames[monthIndex].substr(0,3) + ' ' + day + ', ' + year);
}

      <td ng-show="c.options.start_date" title="{{item.start_date}}">{{item.start_date | date:'mediumDate'}}</td>

Однако, это всегда возвращает дату, равную единице.день позади правильной даты.Может кто-нибудь объяснить, почему это происходит и как это исправить?Я знаю, что могу просто добавить 1 к getDate ():

var day = date.getDate() +1;

Это кажется неправильным, хотя ... любой совет?

1 Ответ

0 голосов
/ 16 февраля 2019

Для получения дополнительной информации см. Этот вопрос: Всегда ли объект даты Javascript всегда один выходной?

Синтаксический анализатор new Date() не является надежным, поскольку вы получаете разные результаты для другой строкиформаты даты.

new Date()
// Fri Feb 15 2019 15:08:14 GMT-0600 (Central Standard Time)

new Date("2019-02-15")
// Thu Feb 14 2019 18:00:00 GMT-0600 (Central Standard Time)

new Date("2019-02-15 00:00:00")
// Thu Feb 15 2019 18:00:00 GMT-0600 (Central Standard Time)

new Date("02/15/2019")
// Fri Feb 15 2019 00:00:00 GMT-0600 (Central Standard Time)

Некоторые форматы даты, особенно если вы не включаете информацию о времени, будут обрабатывать вашу дату как основанную на среднем времени по Гринвичу, а затем смещать вашу дату в соответствии с локалью вашего компьютера.Это приведет к смещению даты на отрицательные 6 часов (CST), фактически изменив ваш день на предыдущий.

...