2014-06-10 8 views

Odpowiedz

22

Swift 3:

let date = Date()// Aug 25, 2017, 11:55 AM 
let calendar = Calendar.current 

let hour = calendar.component(.hour, from: date) //11 
let minute = calendar.component(.minute, from: date) //55 
let sec = calendar.component(.second, from: date) //33 
let weekDay = calendar.component(.weekday, from: date) //6 (Friday) 

któryś z elementu dostępne API poniżej

public enum Component { 
    case era 
    case year 
    case month 
    case day 
    case hour 
    case minute 
    case second 
    case weekday 
    case weekdayOrdinal 
    case quarter 
    case weekOfMonth 
    case weekOfYear 
    case yearForWeekOfYear 
    case nanosecond 
    case calendar 
    case timeZone 
} 

Swift 2:

let currentHour = NSCalendar.currentCalendar().component(.Hour, fromDate: NSDate()) 

To może być wystarczająco:

let currentDate = NSDate() // You can input the custom as well 
let calendar = NSCalendar.currentCalendar() 
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: currentDate) 
let currentHour = components.hour // You can play around with the ""components"" 
+1

Dziękuje, ale IMHO ten kod jest do kompleksu, bo po prostu chcą uzyskać porze dnia –

+10

Niestety, nie ciebie. co masz na myśli ** Chcę tylko godzinę dnia **? a także ** kod jest złożony **? –

+0

@KumarKL jak dostać dzień w całości np. W piątek, sobotę itp? –

6

Jeśli chcesz aktualną godzinę w ciągu, to jest tak krótki i czytelny mogłem myśleć.

let formatter = NSDateFormatter() 
formatter.dateFormat = "HH" 

let timeString = formatter.stringFromDate(NSDate()) 
+0

Rozumiem twój kod, ale mimo wszystko potrzebowałbym liczby całkowitej zamiast łańcucha, ale dziękuję bardzo za pomoc, wierzę, że ten kod może być bardzo przydatny. –

+1

Najlepsze dzięki to głosowanie w górę :) – Binarian

1

W końcu udało mi się znaleźć najprostszy rozwiązanie po walczą o czasie

let dateComponents = NSCalendar.currentCalendar().components(NSCalendarUnit.HourCalendarUnit, fromDate: NSDate()) 
let nHourOfDay = dateComponents.hour 
+0

czy mógłbyś usunąć "NSCalendarUnit"? Jestem z dala od mojego Maca i nie mogę go przetestować. –

+0

@JeanLeMoignan Tak, możesz. Testowałem to. – Ben

75

Swift 3,0

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

 

Lub, jeśli jesteś zainteresowany formatem daty 12 hour AM/PM, następnie użyj NSDateFormatter

let formatter = DateFormatter() 
formatter.dateFormat = "hh a" // "a" prints "pm" or "am" 
let hourString = formatter.string(from: Date()) // "12 AM" 

Jeśli chcesz minuty, sekundy i innych, wykonaj następujące

let date = Date() // save date, so all components use the same date 
let calendar = Calendar.current // or e.g. Calendar(identifier: .persian) 

let hour = calendar.component(.hour, from: date) 
let minute = calendar.component(.minute, from: date) 
let second = calendar.component(.second, from: date) 

Check out dostępnych komponentów na Apple docs:

.era, .year, .month, .day, .hour, .minute, .second, 
.weekday, .weekdayOrdinal, .quarter, weekOfMonth, .weekOfYear, 
.yearForWeekOfYear, .nanosecond, .calendar, .timezone 

Swift 2.0

let hour = NSCalendar.currentCalendar().component(.Hour, fromDate: NSDate()) 

Swift 1,0

let hour = NSCalendar.currentCalendar().component(.CalendarUnitHour, fromDate: NSDate()) 
+1

Z Swift 2: 'let hour = NSCalendar.currentCalendar(). Component (.Hour, fromDate: NSDate())' –

+1

miło jest zobaczyć, jak Swift poprawia się z czasem. Wersja Swift 3.0 jest o wiele łatwiejsza do odczytania, że ​​Swift 1.0 jeden – Kasztan

+0

Chcesz użyć "h a", a nie "hh a" Jeśli chcesz 19, a nie 07 pm – DoesData

1

Swift 2.0:

let hour = NSCalendar.currentCalendar().component(NSCalendarUnit.Hour, fromDate: NSDate()) 
0

można uzyskać wartość całkowitą bieżącej godziny w krok tak:

let currentHour = NSCalendar.currentCalendar().components(.Hour, fromDate: NSDate()).hour 
0

Oto przykład odniesienia dla jak to zrobić (DateUtils.swift) -

Przykład Zastosowanie:

let today = DateUtils.getToday(); 
    let hr = DateUtils.getHours(today); 
    let min = DateUtils.getMinutes(today); 
    ... (etc.) ... 

DateUtils.swift:

//Field wrapper routines 
class func getToday() -> Date    { return Date(); } 
class func getHours(_ date : Date) -> Int { return Calendar.current.component(.hour, from: date); } 
class func getMinutes(_ date : Date) -> Int { return Calendar.current.component(.minute, from: date); } 
... (continued for all fields, see file) ... 
Powiązane problemy