Javascript: правильно преобразовать строку даты в объект даты - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть строковая дата, например, «20200321082245». Я пытаюсь преобразовать его с помощью чистого кода Javaccript в объект даты, разделив его и создав объект даты, например:

'20200321082245' -> 2020-03-21 08:22:45

'202003210.2245' -> Этот случай с точкой должен быть исключен. Я должен вернуть объект с нулевой датой

Как я могу правильно преобразовать его? Поскольку syncDate может содержать точку, например, двойное число, а не целое число.

Мой код:

        function convertDate(syncDate){
            var date = null;
            if(syncDate){
            try {
                if (!isNaN(syncDate)) {
                        var d = syncDate.toString().match(/.{1,2}/g)
                        var len = d.length;
                        var dateString = '';
                        switch(len){
                            case 2:
                                dateString = d[0]+d[1];
                            case 3:
                                dateString = d[0]+d[1] +'-'+d[2]
                            case 4:
                                dateString = d[0]+d[1] +'-'+d[2]+'-'+d[3]
                            case 5:
                                dateString = d[0]+d[1] +'-'+d[2]+'-'+ d[3]+' '+d[4]
                            case 6:
                                dateString = d[0]+d[1] +'-'+d[2]+'-'+d[3]+' '+d[4]+':'+d[5];
                            case 7:
                                dateString = d[0]+d[1] +'-'+d[2]+'-'+d[3]+' '+d[4]+':'+d[5]+':'+d[6];
                        }
                      if(dateString)
                         date = new Date(dateString);
                    }
                } catch (e) {}
            }

            return date;
         }

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020
var value = '20200321082245';
var dateRx = /(^\d\d\d\d)(\d\d)(\d\d)(\d\d)?(\d\d)?(\d\d)?/;
if (dateRx.test(value)) {
    return new Date(value.replace(dateRx, '$1-$2-$3 $4:$5:$6'));
}
return null;
0 голосов
/ 22 апреля 2020

Вы можете проверить, содержит ли строка . , используя свойство includes .

if(string.includes('.')){
    return null;
}

При преобразовании его в объект даты существует несколько способы достижения этого. Смотрите здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...