sourcecode

24시간 형식으로 Xcode Swift am/pm 시간

codebag 2023. 8. 11. 21:46
반응형

24시간 형식으로 Xcode Swift am/pm 시간

am/pm 포맷 시간을 24시간 포맷 시간으로 변환하려고 합니다.

6:35 PM to 18:35

놀이터에서 이 코드를 시도해봤는데 시간을 혼자 두면 작동하지 않는 것 같습니다.

let dateAsString = "02/12/15, 6:35 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH"
let date = dateFormatter.dateFromString(dateAsString) //returns nil

이 일을 어떻게 해야 하는지 아는 사람?

NSDateFormatter와 "h:mma" 형식을 사용하여 날짜로 변환하고 "를 사용하여 문자열로 다시 변환하기만 하면 됩니다.HH:mm" 형식입니다.이 자료를 숙지하려면 이 날짜 형식 안내서를 참조하십시오.

enter image description here

let dateAsString = "6:35 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "h:mm a"
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // fixes nil if device time in 24 hour format
let date = dateFormatter.dateFromString(dateAsString)

dateFormatter.dateFormat = "HH:mm"
let date24 = dateFormatter.stringFromDate(date!)

스위프트 3

24시간 ~ 12시간의 시간 형식

let dateAsString = "13:15"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"

let date = dateFormatter.date(from: dateAsString)
dateFormatter.dateFormat = "h:mm a"
let Date12 = dateFormatter.string(from: date!)
print("12 hour formatted Date:",Date12)

출력은 12시간 형식이 될 것입니다 날짜: 오후 1:

시간 형식 12시간 - 24시간

let dateAsString = "1:15 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "h:mm a"

let date = dateFormatter.date(from: dateAsString)
dateFormatter.dateFormat = "HH:mm"

let Date24 = dateFormatter.string(from: date!)
print("24 hour formatted Date:",Date24)

출력은 24시간 형식이 됩니다. 날짜: 13:15

스위프트 3 *

12시간(즉, AM 및 PM)을 24시간 형식으로 변환하는 코드는 다음을 포함합니다.

시간:분:초:오전/오후 ~ 시간:분:

func timeConversion24(time12: String) -> String {
    let dateAsString = time12
    let df = DateFormatter()
    df.dateFormat = "hh:mm:ssa"

    let date = df.date(from: dateAsString)
    df.dateFormat = "HH:mm:ss"

    let time24 = df.string(from: date!)
    print(time24)
    return time24
}

입력

07:05:45 PM

산출량

19:05:45

유사하게

24시간을 12시간(즉, AM 및 PM) 형식으로 변환하는 코드는 다음을 포함합니다.

시간:분:시간(초):분:초:AM/PM

func timeConversion12(time24: String) -> String {
    let dateAsString = time24
    let df = DateFormatter()
    df.dateFormat = "HH:mm:ss"

    let date = df.date(from: dateAsString)
    df.dateFormat = "hh:mm:ssa"

    let time12 = df.string(from: date!)
    print(time12)
    return time12
}

입력

19:05:45

산출량

07:05:45 PM

다음은 추가 형식이 포함된 답변입니다.

Xcode 12, Swift 5.3 **

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm:ss"
var dateFromStr = dateFormatter.date(from: "12:16:45")!

dateFormatter.dateFormat = "hh:mm:ss a 'on' MMMM dd, yyyy"
//Output: 12:16:45 PM on January 01, 2000

dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"
//Output: Sat, 1 Jan 2000 12:16:45 +0600

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
//Output: 2000-01-01T12:16:45+0600

dateFormatter.dateFormat = "EEEE, MMM d, yyyy"
//Output: Saturday, Jan 1, 2000

dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
//Output: 01-01-2000 12:16

dateFormatter.dateFormat = "MMM d, h:mm a"
//Output: Jan 1, 12:16 PM

dateFormatter.dateFormat = "HH:mm:ss.SSS"
//Output: 12:16:45.000

dateFormatter.dateFormat = "MMM d, yyyy"
//Output: Jan 1, 2000

dateFormatter.dateFormat = "MM/dd/yyyy"
//Output: 01/01/2000

dateFormatter.dateFormat = "hh:mm:ss a"
//Output: 12:16:45 PM

dateFormatter.dateFormat = "MMMM yyyy"
//Output: January 2000

dateFormatter.dateFormat = "dd.MM.yy"
//Output: 01.01.00

//Output: Customisable AP/PM symbols
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "Pm"
dateFormatter.dateFormat = "a"
//Output: Pm

// Usage
var timeFromDate = dateFormatter.string(from: dateFromStr)
print(timeFromDate)

아래는 솔루션의 신속한 3가지 버전입니다.

let dateAsString = "6:35:58 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "h:mm:ss a"
let date = dateFormatter.date(from: dateAsString)

dateFormatter.dateFormat = "HH:mm:ss"
let date24 = dateFormatter.string(from: date!)
print(date24)

Swift 버전 3.0.2, Xcode 버전 8.2.1(8C1002)(12시간 형식):

func getTodayString() -> String{

        let formatter = DateFormatter()
        formatter.dateFormat = "h:mm:ss a "
        formatter.amSymbol = "AM"
        formatter.pmSymbol = "PM"

        let currentDateStr = formatter.string(from: Date())
        print(currentDateStr)
        return currentDateStr 
}

출력: 오전 12:41:42

자유롭게 의견을 말씀해주세요.감사해요.

이 기능을 날짜 변환에 사용합니다. 장치가 24/12시간 형식으로 작동할 때 정상적으로 작동합니다.

https://developer.apple.com/library/archive/qa/qa1480/_index.html 을 참조하십시오.

func convertDateFormatter(fromFormat:String,toFormat:String,_ dateString: String) -> String{
    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.dateFormat = fromFormat
    let date = formatter.date(from: dateString)
    formatter.dateFormat = toFormat
    return  date != nil ? formatter.string(from: date!) : ""
}

불행하게도 애플 우선순위는 장치 날짜 형식입니다. 그래서 어떤 경우에는 당신이 입력한 것과 반대로, 당신의 형식을 12시간으로 빠르게 변경하세요.

이 문제를 해결하려면 dateFormatFromTemplate 대신 setLocalizedDateFormatFromTemplate를 사용하여 AM 및 PM을 숨깁니다.

let formatter = DateFormatter()
formatter.setLocalizedDateFormatFromTemplate("HH:mm:ss a")
formatter.amSymbol = ""
formatter.pmSymbol = ""
formatter.timeZone = TimeZone(secondsFromGMT: 0)
var prettyDate = formatter.string(from: Date())

https://prograils.com/posts/the-curious-case-of-the-24-hour-time-format-in-swift 에서 더 자세한 정보를 볼 수 있는 매우 유용한 게시물을 확인할 수 있습니다.

여기 다른 방법에 대한 코드가 있습니다.

스위프트 3용

 func amAppend(str:String) -> String{
    var temp = str
    var strArr = str.characters.split{$0 == ":"}.map(String.init)
    var hour = Int(strArr[0])!
    var min = Int(strArr[1])!
    if(hour > 12){
        temp = temp + "PM"
    }
    else{
        temp = temp + "AM"
    }
    return temp
}
let calendar = Calendar.current
let hours    = calendar.component(.hour, from: Date())
let minutes  = calendar.component(.minute, from: Date())
let seconds  = calendar.component(.second, from: Date())

제 경우에는 레이블을 일반 시간 형식으로 업데이트한 다음 선택한 시간의 24시간 형식을 저장하여 다른 작업을 수행하는 기능을 사용합니다.

여기 내 코드가...

func timeUpdate(sender: NSDate)
{
    let timeSave = NSDateFormatter() //Creating first object to update time label as 12hr format with AM/PM
    timeSave.timeStyle = NSDateFormatterStyle.ShortStyle //Setting the style for the time selection.
    self.TimeShowOutlet.text = timeSave.stringFromDate(sender) // Getting the string from the selected time and updating the label as 1:40 PM
    let timeCheck = NSDateFormatter() //Creating another object to store time in 24hr format.
    timeCheck.dateFormat = "HH:mm:ss" //Setting the format for the time save.
    let time = timeCheck.stringFromDate(sender) //Getting the time string as 13:40:00
    self.timeSelectedForCheckAvailability = time //At last saving the 24hr format time for further task.
}

이 함수를 작성한 후 날짜/시간 선택기에서 시간을 선택하는 위치에서 이 함수를 호출할 수 있습니다.

감사합니다, 이것이 도움이 되길 바랍니다.

이것은 우리의 친구들이 대답하는 것과 비슷합니다: https://stackoverflow.com/a/43801717/2796837 하지만 우리의 모든 인터넷 친구들의 아이디어를 사용하여 저는 다음과 같은 더 완벽한 단일 해결책을 생각해냈습니다:

let amPmFormat = "h:mm a"
let twentyFourHFormat = "HH:mm"
func hourMinuteParser(date: Date) -> KotlinInt{
    let formatter = DateFormatter()
    if DateFormatter.dateFormat(fromTemplate: "j",options:0, locale: Locale.current)!.contains("a") {
        formatter.dateFormat = amPmFormat
    }else{
        formatter.dateFormat = twentyFourHFormat
    }
    let stringTime = formatter.string(from: date)
    let time = formatter.date(from: stringTime)
    formatter.dateFormat = twentyFourHFormat

    let time24 = formatter.string(from: time!)
    let timeWithoutSpecialCharacters = time24.replacingOccurrences(of: ":", with: "")
    let int2 = Int32(timeWithoutSpecialCharacters) ?? 0
    return KotlinInt(int: int2)
}

이렇게 하면 시간이 오는 형식과 관계없이 시간을 구문 분석하여 HH:mm로 출력할 수 있습니다. 세 번째 형식 변경을 원하는 대로 변경할 수 있습니다.

언급URL : https://stackoverflow.com/questions/29321947/xcode-swift-am-pm-time-to-24-hour-format

반응형