NSDate를 사용하여 Swift 3에서 시간 (시, 분, 초)을 얻는 방법은 무엇입니까?


답변:


164

에서 스위프트 3.0 애플은 'NS'접두사와 만든 모든 것을 간단하게 제거. 아래는 'Date'클래스 (NSDate 대체)에서시, 분, 초를 얻는 방법입니다.

let date = Date()
let calendar = Calendar.current

let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let seconds = calendar.component(.second, from: date)
print("hours = \(hour):\(minutes):\(seconds)")

이와 같이 연대, 연도, 월, 날짜 등을 해당에 전달하여 얻을 수 있습니다.


97

Swift 4.2 및 5

// *** Create date ***
let date = Date()

// *** create calendar object ***
var calendar = Calendar.current

// *** Get components using current Local & Timezone ***
print(calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date))

// *** define calendar components to use as well Timezone to UTC ***
calendar.timeZone = TimeZone(identifier: "UTC")!

// *** Get All components from date ***
let components = calendar.dateComponents([.hour, .year, .minute], from: date)
print("All Components : \(components)")

// *** Get Individual components from date ***
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let seconds = calendar.component(.second, from: date)
print("\(hour):\(minutes):\(seconds)")

스위프트 3.0

// *** Create date ***
let date = Date()

// *** create calendar object ***
var calendar = NSCalendar.current

// *** Get components using current Local & Timezone ***    
print(calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date as Date))

// *** define calendar components to use as well Timezone to UTC ***
let unitFlags = Set<Calendar.Component>([.hour, .year, .minute])
calendar.timeZone = TimeZone(identifier: "UTC")!

// *** Get All components from date ***
let components = calendar.dateComponents(unitFlags, from: date)
print("All Components : \(components)")

// *** Get Individual components from date ***
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let seconds = calendar.component(.second, from: date)
print("\(hour):\(minutes):\(seconds)")

'Component' is not a member type of 'Calendar'`let unitFlags ... '라인에 접속 하면 어떻게 되나요?
netigger

1
질문하는 내용이 명확하지 않습니다. 비회원 유형을 Calendar.Component어떻게 추가 할 수 있습니까? 초를 사용할 수없는 "02/12/15, 16:46"을 따르는 날짜를 고려하고 구성 요소를 사용하여 초를 추출하려고하면 0이 경우 반환됩니다 .
Dipen Panchasara

내 문제를 발견했습니다 ... 분명히 Calendar방해 하는 struct라는 이름 을 선언했습니다 Calendar.Component.
netigger

25
let date = Date()       
let units: Set<Calendar.Component> = [.hour, .day, .month, .year]
let comps = Calendar.current.dateComponents(units, from: date)

21

스위프트 4

    let calendar = Calendar.current
    let time=calendar.dateComponents([.hour,.minute,.second], from: Date())
    print("\(time.hour!):\(time.minute!):\(time.second!)")

19

Swift 3에서는 이렇게 할 수 있습니다.

let date = Date()
let hour = Calendar.current.component(.hour, from: date)

그것은 확실히 가장 간결하고 간단한 대답)입니다
블라드

5
let hours = time / 3600
let minutes = (time / 60) % 60
let seconds = time % 60
return String(format: "%0.2d:%0.2d:%0.2d", hours, minutes, seconds)

5

Swift 5 이상

extension Date {
    
    func get(_ type: Calendar.Component)-> String {
        let calendar = Calendar.current
        let t = calendar.component(type, from: self)
        return (t < 10 ? "0\(t)" : t.description)
    }
}

용법:

print(Date().get(.year)) // => 2020
print(Date().get(.month)) // => 08
print(Date().get(.day)) // => 18 

4

가장 유용하게 사용할 수 있도록 다음 함수를 만듭니다.

func dateFormatting() -> String {
    let date = Date()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "EEEE dd MMMM yyyy - HH:mm:ss"//"EE" to get short style
    let mydt = dateFormatter.string(from: date).capitalized

    return "\(mydt)"
}

다음과 같이 원하는 곳에서 간단히 호출 할 수 있습니다.

print("Date = \(self.dateFormatting())")

이것은 출력입니다.

Date = Monday 15 October 2018 - 17:26:29

원하는 경우 시간 만 변경됩니다.

dateFormatter.dateFormat  = "HH:mm:ss"

그리고 이것은 출력입니다.

Date = 17:27:30

그리고 그게 다야...


2
swift 4

==> Getting iOS device current time:-

print(" ---> ",(Calendar.current.component(.hour, from: Date())),":",
               (Calendar.current.component(.minute, from: Date())),":",
               (Calendar.current.component(.second, from: Date())))

output: ---> 10 : 11: 34

1

이것은 둘 이상의 수업에서 현재 날짜를 사용하려는 사람들에게 유용 할 수 있습니다.

extension String {


func  getCurrentTime() -> String {

    let date = Date()
    let calendar = Calendar.current


    let year = calendar.component(.year, from: date)
    let month = calendar.component(.month, from: date)
    let day = calendar.component(.day, from: date)
    let hour = calendar.component(.hour, from: date)
    let minutes = calendar.component(.minute, from: date)
    let seconds = calendar.component(.second, from: date)

    let realTime = "\(year)-\(month)-\(day)-\(hour)-\(minutes)-\(seconds)"

    return realTime
}

}

용법

        var time = ""
        time = time.getCurrentTime()
        print(time)   // 1900-12-09-12-59
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.