NSDate का उपयोग करके स्विफ्ट 3 में समय (घंटा, मिनट, दूसरा) कैसे प्राप्त करें?


86

आप स्विफ्ट 3 में NSDate वर्ग से घंटे, मिनट और दूसरा कैसे निर्धारित कर सकते हैं?

स्विफ्ट 2 में:

let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.Hour, fromDate: date)
let hour = components.hour

स्विफ्ट 3?


इस उत्तर को भी देखें ।
सुरग

जवाबों:


168

में स्विफ्ट 3.0 एप्पल 'NS' उपसर्ग और बना सब कुछ सरल हटा दिया। नीचे 'तिथि' वर्ग (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)")

इन की तरह आप भी इसी वर्ष से उत्तीर्ण होकर युग, वर्ष, माह, तिथि आदि प्राप्त कर सकते हैं।


100

स्विफ्ट 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'लाइन पर मिलूं 'चलो यूनिटफ्लैग्स ... ``
netigger

1
आप जो पूछ रहे हैं वह मेरे लिए स्पष्ट नहीं है, आप गैर सदस्य प्रकार कैसे जोड़ सकते हैं Calendar.Component? विचार करें कि आपकी तिथि "02/12/15, 16:46" का अनुसरण कर रही है, जहां सेकंड उपलब्ध नहीं हैं और आप सेकंड का उपयोग करने का प्रयास करते हैं, यह उस स्थिति में आपको वापस कर देगा 0
दीपन पंचसारा

मैं अपने मुद्दे को मिला ... मैं एक struct नामित की घोषणा की थी Calendar, जिसके साथ दखल 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

स्विफ्ट 3 में आप ऐसा कर सकते हैं,

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

यह निश्चित रूप से सबसे संक्षिप्त और सरल उत्तर है)
व्लाद

6

स्विफ्ट 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.