2016-08-19 8 views
0

私は非常に単純なケースがありますが、何らかの理由でiDevの「初心者」レベルのために対処する正しい方法を見つけることができません。 私のアプリを使用しているユーザーには、1日にいくつかの制限があります。 NSUserDefaultsの制限は、特定のユーザーアクションの後に設定します。 今はNSDate値にする必要があると思いますが、わかりません。 ユーザーが何らかのアクションを要求するたびに、アプリは制限がないかどうかをチェックする必要があります。正しくチェックするには? たとえば、今日の午前9時には、ユーザーは制限を超えてしまい、アプリは深夜に何かを制限する必要があります。翌日の午前0時01分に限界を確認した後、それは "緑色"でなければなりません。NSDate真夜中の翌日

少し混乱し、私はあなたが2 APIを使用してNSCalendarクラスを使用することができ、次の日の開始を取得するには:(

+1

あなたは2つの日付を比較しようとしている間に立ち往生していましたか? – holex

+0

@holexの問題は、現在の時刻に合わせてNSDateを作成することにあります。例:今は08/19/2016 01:38 AMです。NSDate 08/20/2016 00:01 AMを作成する必要があります。 –

答えて

1

の最初の瞬間の日付を返しスウィフトにおけるソリューションです。関数がNSDateComponentsクラスを使用して、次の日の最初の分までの時間を設定します。

public class func getTomorrow() -> NSDate { 
    let cal = NSCalendar.currentCalendar() 
    let today = NSDate() 
    let dateComp = cal.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: today) 
    dateComp.day = dateComp.day + 1 
    dateComp.hour = 0 
    dateComp.minute = 1 
    dateComp.second = 0 
    return cal.dateFromComponents(dateComp)! 
} 

それはコンパイルする場合、私はチェックしていませんが、それは問題ないはずです。 お手伝い願います!

1

を知っている:

まず:あなたの現在の時刻の翌日(NSDate)を取得:

は、指定された日付に指定されたコンポーネントを追加することによって算出された絶対時間 を表す新しいNSDateオブジェクトを返し

01。その後、NSDateあなたの次の日の存在最初の瞬間取得

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setDay:1]; 

あなたcompsパラメータは以下のように、唯一のDay値= 1を持つ必要があります。

指定した日付ここ

- (NSDate *)startOfDayForDate:(NSDate *)date 
関連する問題