1 Reply
      Latest reply on Dec 4, 2018 4:08 AM by Claude31
      mksmurali Level 1 Level 1 (0 points)

        Hi,

        How to convert the string "10h : 50m" to seconds?

        • Re: How to convert the string "10h : 50m" to seconds?
          Claude31 Level 8 Level 8 (6,895 points)

          Whet is your problem ? Parsing the String or computing the value ?

           

          How is this string formatted ? By a formatter ?

          To find numberOfHours and numberOfSeconfs, you should

          - search for "h", retain the part of string before

          - search for m and retain the 2 chars before (which may be "15" or " 5" for instance)

           

          Compute seconds :

          sec = numberOfHours * 3600 + numberOfSeconfs * 60

          Here sec = 36000 + 3000 = 39000

           

          You can use regex for this ; it will be robust to variations as "9h: 50m" or 10h:5m" or even "10h: 5mn"

           

          let timeStr = "10h : 50m"
          var hours = 0
          var minutes = 0
          
          let patternH = "[0-9]+h"
          let regexH = try! NSRegularExpression(pattern: patternH, options: .caseInsensitive)
          if let match = regexH.firstMatch(in: timeStr, range: NSRange(0..    let hStr = String(timeStr[Range(match.range(at: 0), in: timeStr)!].dropLast())
              hours = Int(hStr) ?? 0
          } else {
              print("No match")
          }
          let patternM = "[0-9]+m"
          let regexM = try! NSRegularExpression(pattern: patternM, options: .caseInsensitive)
          if let match = regexM.firstMatch(in: timeStr, range: NSRange(0..    let mStr = String(timeStr[Range(match.range(at: 0), in: timeStr)!].dropLast())
              minutes = Int(mStr) ?? 0
          } else {
              print("No match")
          }
          let seconds = 3600 * hours + 60 * minutes