Я думаю, что ваш вопрос нужно разделить на несколько шагов, а ваше требование не очень понятно.
Здесь я выполнил следующие шаги:
Разделите ваш ввод на «Ср» и «11: 45 вечера».
Используйте 'Wed', чтобы вычислить наступающую среду (если сегодня среда, тогда наступающая среда все еще будет сегодня или следующей средой)
Установите 11:45 в часы и минуты.
Измените его на формат, который вы предпочитаете.
Я видел, что у вашего тега есть кипарис, поэтому я написал кипарисовый тест с функцией выше.
describe('Find the coming Wednesday', () => {
it('test',()=>{
cy.visit('https://www.google.com');
const time = "Wed, 11:45 pm";
var returnedDatetime = findComingDate(time);
const outputDatetime = Cypress.moment(returnedDatetime).utc().format();
console.log(outputDatetime);
})
})
function findComingDate(dayAndTime) {
//split your string
var dayAndTime = dayAndTime.split(',');
var day = dayAndTime[0];
var time = dayAndTime[1];
var parts = time.match(/(\d+):(\d+) (am|pm)/);
if (parts) {
var hours = parseInt(parts[1]),
minutes = parseInt(parts[2]),
tt = parts[3];
}
if (tt === 'pm' && hours < 12) hours += 12;
var days = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];
var dayindex = days.indexOf(day) + 1;
if (dayindex === 0) {
throw ('You can only input 3 letters for the day name')
}
else {
var cd = new Date();
//use commented code below if today is tuesady and your input is tuesday and you want output is today.
cd.setDate(cd.getDate() + ((7-cd.getDay())%7+dayindex)%7);
//use commented code below if today is tuesady and your input is tuesday and you want output is next tuesday.
//cd.setDate(cd.getDate() + (7-cd.getDay())%7+dayindex)
//change the time
cd.setHours(hours,minutes,0,0);
return cd;
}
}
Я проверил его на 2019-9-24 с вашим вводом 'ср, 11:45 вечера', он возвращает время UTC 2019-09-24T11: 45: 00Z