2016-08-17 3 views
0

Swift에서 시간이 오후 6시에서 오후 11시 사이인지 어떻게 확인할 수 있습니까? NSDateFormatter를 사용하는 데 어려움을 겪고 있습니다. 더 쉬운 방법이 있어야한다고 생각합니다.시간이 범위 내에 있는지 확인 Swift

답변

4

사용 NSCalendar :

let date = NSDate() 

let calendar = NSCalendar.currentCalendar() 
calendar.timeZone = NSTimeZone(name: "MST")! 

let hour = calendar.component(.Hour, fromDate: date) 
let between6And11PM = 18 <= hour && hour < 23 

(영업 이후 편집가 오후 11가 포함되어서는 안 상태)

+0

'날짜'값은 무엇입니까? 'date = calendar.dateWithEra (1, 년 : 2016, 월 : 8, 일 : 16,시 : 23, 분 : 30, 초 : 0, 나노초 : 0) ' –

+0

@ 코드 벤더 ** Shouldn 11시에서 11시 59 분 사이에 떨어지면 실패하지 않습니까? OP는 "오후 6 시부 터 오후 11 시까 지"요청했습니다. 즉 '18:00 <= t <= 23 : 00'입니다. "11:00에서 11:59 사이"는 OP가 묻는 것보다 한 시간 간격이 듭니까? –

0

사용 NSCalendarNSDateComponents. "Calendrical calculations"문자열에서 Xcode를 검색하십시오.

당신은 날로부터 시간, 분, 초를 추출하고 문이 시간 범위 내에 있는지 확인하는 경우 화합물을 작성할 수

if components.hour >= 18 && components.hour < 23 { 
    print("The time is between 6PM and 11PM") 
} 
1
let date = NSDate() 
let calendar = NSCalendar.currentCalendar() 
let components = calendar.components([.Hour, .Minute], fromDate: date) 
let hour = components.hour 

switch hour { 
case 18...23: 
    print("True") 
default: 
    print("False") 
} 

이 솔루션은 사용자의 작동 현재 시간. MST 외부의 사람들이 앱을 사용합니까?

-1

나는 당신이 생각한대로 문자열로 시작한다. (더 많은 문맥을 추가하고, 시도한 것을 설명하거나, 적어도 다음에 처리 할 내용을 설명한다.)

[Swift 3] 

// example of a date-time string 
let timeSubstring = "2016-08-06T18:16:11" 
// initialize 
let datetimeTime = DateFormatter() 
// provide format 
datetimeTime.dateFormat = "yyyy-MM-ddEEEEEHH:mm:ss" 

// converting from time zone 
datetimeTime.timeZone = TimeZone(identifier: "MST") 

// DateFormatter has been set up, now we can form the date properly 
let formDate = datetimeTime.date(from: timeSubstring) 

// create your upper and lower bounds (fill in) 
let topDate = datetimeTime.date(from: "XXXX-XX-XXXXX:XX:XX") 
let bottomDate = datetimeTime.date(from: "XXXX-XX-XXXXX:XX:XX") 

// make comparisons 
// checks condition left operand is smaller than right operand 
if formDate?.compare(other: topDate) == .orderedAscending { 
    // some code 
} 
// condition right smaller than left 
if formDate?.compare(other: bottomDate) == .orderedDescending { 
    // some code 
} 

아니면이 & & 당신이 동시에 확인하는 경우합니다.

+0

우연히 거기에 2 개의'bottomDate' 선언이 있습니다.) – Kametrixom

+0

@Kametrixom Oh jeez, 좋은 눈 - 고마워요. –

관련 문제