Разбор строки в объект Date с определенным форматом - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь получить объект Date js из строки определенного формата.

Моя строковая дата выглядит так:

2019-04-22 05:00:11

Я пытаюсь сделать это таким образом, но я не достигаю ожидаемых результатов:

date_string = "2019-04-22 05:00:11"
date = Date.parseDate(date_string, "YYYY-MM-DD HH:mm:ss")

После этого я хочу добавить этот объект Date time_delta в 30 минут и представить его в строковом формате, что, я думаю, должно быть сделано следующим образом:

new_date = new Date(date.getTime() + i*30*60000)
final_date_string = new_date.toString();

Я хочу, чтобы final_date_string выглядел так:

2019-04-22 05:30:11

Ответы [ 3 ]

3 голосов
/ 30 апреля 2019

Попробуйте этот код:

let [y,M,d,h,m,s] = '2019-04-22 05:00:11'.split(/[- :]/);
new Date(y,parseInt(M)-1,d,h,parseInt(m)+30,s);

Разделите строку даты на основе разделителей, а затем преобразуйте ее в объект даты с любым изменением времени, которое вам нужно.

1 голос
/ 30 апреля 2019

Спасибо за отличный комментарий к @RobG за потенциальную ошибку метода Date.parse().

Попробуйте использовать getTime() функцию Vanilla JavaScript и добавьте 30 секунд:

let date_string = "2019-04-22 05:00:11"
let dateArray = date_string.split(/[- :]/);
let plusThirty = new Date(dateArray[0], parseInt(dateArray[1]-1), parseInt(dateArray[2])
    , dateArray[3], parseInt(dateArray[4]) + 30, dateArray[5]);    
console.log('plusThirty: ', plusThirty);

let dateString = plusThirty.getFullYear() + "-" + (plusThirty.getMonth() + 1) 
    + "-" + plusThirty.getDate() + " " + plusThirty.getHours() + ":" 
    + plusThirty.getMinutes() + ":" + plusThirty.getSeconds();
console.log('dateString: ', dateString);

Вывод:

plusThirty:  Mon Apr 22 2019 05:30:11
dateString:  2019-4-22 5:30:11
0 голосов
/ 30 апреля 2019

Вы можете использовать momentjs по вашему требованию, momentjs - популярная библиотека для дескриптора DateTime

let date_string = "2019-04-22 05:00:11"
let date = moment(date_string, "YYYY-MM-DD HH:mm:ss");
date.add(30, 'minutes');

console.log(date.format('YYYY-MM-DD HH:mm:ss'));

let date_string = "2019-04-22 05:00:11"
let date = moment(date_string, "YYYY-MM-DD HH:mm:ss");
date.add(30, 'minutes');

final_date_string = date.format('YYYY-MM-DD HH:mm:ss')
console.log(final_date_string);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...