简体   繁体   中英

Javascript conditional time range format function

I am using React for my frontend app.

I have two different time format of data.

One is like this 08-10 and another one is like this 05:00-05:30 .

Most of the time format data is like this 08-10 , few are like 05:00-05:30 .

After getting the time date data, I used map function and pass to my time-format helper function, In my browser I want to display my data like this 05:00-05:30 .

My helper function do like this: if the time looks like this 08-10 then the function will split it into two then add : and convert them into 08:00-10:00 . As I mentioned I have two different time format data, when the data come like this 05:00-05:30 then my helper function convert them like 0500-0530 .

I want to render my function conditionally if the data is like 05:00-05:30 then return as it is, if the data is like this 08-10 then convert them into 08:00-10:00 . I don't know how to do that in my helper function.

 const toTimeRangeFormat = (range) => { console.log(range); const [start, end] = range?.split("-"); const toFourDigitTime = (time) => { const [hours, minutes] = time.split(":"); return hours.padStart(2, "0") + (minutes? minutes: ":00"); }; if (start && end) { return toFourDigitTime(start) + " - " + toFourDigitTime(end); } return range; }; const time = ["08-10", "05:00-05:30"]; time.filter((i) => { if (typeof i === "string") { return toTimeRangeFormat(i); } }); console.log(toTimeRangeFormat());

Your code seemed to work if you call it correctly

I assume you want this though

 const re = /(\d{2}):?(\d{2})?/; // take the (set of) two digits from NN:NN, NNNN or NN - the? means optional const toFourDigitTime = time => { const [hours, minutes] = time.match(re).slice(1); // ignore result[0] return `${hours.padStart(2, "0")}:${minutes? minutes: "00"}`; }; const toTimeRangeFormat = (range) => { const [start, end] = range?.split("-"); if (start && end) { return toFourDigitTime(start) + " - " + toFourDigitTime(end); } return range; }; const time = ["08-10", "05:00-05:30"]; const time1 = time.map(str => toTimeRangeFormat(str)); console.log(time1);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM