W Swift 3.0 Apple usunęło prefiks „NS” i uprościło wszystko. Poniżej znajduje się sposób na uzyskanie godziny, minuty i sekundy z klasy „Data” (alternatywny 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)")
W ten sposób możesz uzyskać erę, rok, miesiąc, datę itp., Przekazując odpowiednie.
// *** 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)")
Swift 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 asDate))
// *** 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)")
Co jeśli dostanę się 'Component' is not a member type of 'Calendar'na linię `` let unitFlags ... ''
netigger
1
Nie jest dla mnie jasne, o co prosisz. Jak możesz dodać typ osoby niebędącej członkiem Calendar.Component? Weź pod uwagę, że Twoja data przypada po „02/12/15, 16:46”, gdzie sekundy nie są dostępne i próbujesz wydobyć sekundy za pomocą składników, 0w takim przypadku zwróci ci to.
Dipen Panchasara
Znalazłem swój problem ... Zadeklarowałem strukturę o nazwie, Calendarktóra Calendar.Componentoczywiście przeszkadzała .
netigger
25
let date = Date()
let units: Set<Calendar.Component> = [.hour, .day, .month, .year]
let comps = Calendar.current.dateComponents(units, from: date)
let calendar = Calendar.current
let time=calendar.dateComponents([.hour,.minute,.second], from: Date())
print("\(time.hour!):\(time.minute!):\(time.second!)")
funcdateFormatting() -> String {
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE dd MMMM yyyy - HH:mm:ss"//"EE" to get short stylelet mydt = dateFormatter.string(from: date).capitalized
return"\(mydt)"
}
Po prostu nazywasz to, gdzie chcesz, w ten sposób:
Może to być przydatne dla tych, którzy chcą wykorzystać bieżącą datę na więcej niż jednej lekcji.
extensionString{
funcgetCurrentTime() -> 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
}
}
Stosowanie
var time = ""
time = time.getCurrentTime()
print(time) // 1900-12-09-12-59
Odpowiedzi:
W Swift 3.0 Apple usunęło prefiks „NS” i uprościło wszystko. Poniżej znajduje się sposób na uzyskanie godziny, minuty i sekundy z klasy „Data” (alternatywny 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)")
W ten sposób możesz uzyskać erę, rok, miesiąc, datę itp., Przekazując odpowiednie.
źródło
Swift 4.2 i 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)")
Swift 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)")
źródło
'Component' is not a member type of 'Calendar'
na linię `` let unitFlags ... ''Calendar.Component
? Weź pod uwagę, że Twoja data przypada po „02/12/15, 16:46”, gdzie sekundy nie są dostępne i próbujesz wydobyć sekundy za pomocą składników,0
w takim przypadku zwróci ci to.Calendar
któraCalendar.Component
oczywiście przeszkadzała .let date = Date() let units: Set<Calendar.Component> = [.hour, .day, .month, .year] let comps = Calendar.current.dateComponents(units, from: date)
źródło
Szybki 4
let calendar = Calendar.current let time=calendar.dateComponents([.hour,.minute,.second], from: Date()) print("\(time.hour!):\(time.minute!):\(time.second!)")
źródło
W Swift 3 możesz to zrobić,
let date = Date() let hour = Calendar.current.component(.hour, from: date)
źródło
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) } }
Stosowanie:
print(Date().get(.year)) // => 2020 print(Date().get(.month)) // => 08 print(Date().get(.day)) // => 18
źródło
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)
źródło
Dla najlepszego wykorzystania tworzę tę funkcję:
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)" }
Po prostu nazywasz to, gdzie chcesz, w ten sposób:
print("Date = \(self.dateFormatting())")
to jest wynik:
Date = Monday 15 October 2018 - 17:26:29
jeśli chcesz tylko czas, po prostu zmień:
dateFormatter.dateFormat = "HH:mm:ss"
a to jest wynik:
Date = 17:27:30
i to wszystko...
źródło
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
źródło
Może to być przydatne dla tych, którzy chcą wykorzystać bieżącą datę na więcej niż jednej lekcji.
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 } }
Stosowanie
var time = "" time = time.getCurrentTime() print(time) // 1900-12-09-12-59
źródło