Как проверить действительный формат времени? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь проверить, соответствует ли строковая переменная 12-часовому формату чч: мм AM или чч: мм PM.Где hh обозначает часы, mm обозначает минуты, а AM или PM обозначает утро или вечер.У меня есть файл CSV, где каждая строка содержит время в 12-часовом формате, например, в 01:00 или 12:00.Я извлекаю каждую строку и проверяю, соответствует ли она требуемому формату.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Я бы лучше использовал DateFormatter, но если вы настаиваете на использовании RegEx, попробуйте:

let dateString = "21:23 PM"
if let thisMatches = dateString.range(of: "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm)$", options: .regularExpression) {
    Swift.print("this is a time")
} else {
    Swift.print("this is not the time")
}
0 голосов
/ 15 февраля 2019

Используйте этот код, чтобы получить указанное время, является действительным или нет.

Case1:

let myTime = checkTimeIsValid(from: "01:28 AM")
print("Time Is Valid:", myTime) //Time Is Valid: true

Case2:

let myTime = checkTimeIsValid(from: "21:28 AM")
print("Time Is Valid:", myTime) //Time Is Valid: false

Функция:

func checkTimeIsValid(from string: String) -> Bool {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "hh:mm a"
    if (dateFormatter.date(from: string) != nil) {
        return true
    }else{
        return false
    }
}
0 голосов
/ 15 февраля 2019

Просто передайте строку в форматировщик даты с требуемым форматом.Если он возвращает объект Date, то строка содержит действительную дату.

func getDate(from string: String) -> Date? {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd h:mm a"
    return dateFormatter.date(from: string)
}

if let date = getDate(from: "2019-02-14 9:28 PM") {
    print(date)
}

Проверьте NSDateFormatter.com для справки.

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