2016-10-23 14 views
2

私はFirebaseデータベースに作成したアプリケーションをリンクしています。保存されているタイムスタンプと現在の日付の差

ボタンを押すと、アプリはFirebaseにtimeIntervalSinceReferenceDateという時刻を送信します。値の例は、-498898978852.928です。

私はこの数字が、48時間以上前に同じボタンを押したことを区別することを望みます。

48時間を測定する方法はありますか、または別の方法を使用する必要がありますか?

私はswift 2とXcode 7を使用しています!

+0

を使用を使用している場合なぜFirebaseがタグに含まれていますか? – Jay

答えて

3

スウィフト3.あなたはスウィフト2、NSDate

//the first button press, this is a double but assume it's a timeInterval 
let firstPress = 498898978.928 

let date = Date() 

let secondPress = date.timeIntervalSinceReferenceDate //the second button press 

let diffInSeconds = secondPress - firstPress //total time difference in seconds 

let hours = diffInSeconds/60/60 //hours=diff in seconds/60 sec per min/60 min per hour 

if hours < 48 { 
    print("less then 48 hours difference") 
} else { 
    print("greater/equal to 48 hours difference") 
} 
0

unix timeStamp * 1000 Intにキャストされたときはタイムスタンプとして使用されますが、時間操作に使用する予定です。あなたのタイムスタンプを保存するためにこれを使用する: -

let timeStamp = NSDate.timeIntervalSinceReferenceDate // Like this only 

extension NSDate { 

func daysFromTheDate(date: NSDate) -> Int { 
    return NSCalendar.currentCalendar().components(.Day, fromDate: date, toDate: self, options: []).day 
} 
} 

class yourViewController : UIViewController,.. { 
... 
    } 

宣言クラスのスコープ外NSDateの拡張を行います -

let date1 = NSDate() // Declare the variable globally 

次に、あなたの.observeにイベントfirebase関数はこれを使用します: -

さらに日付操作のために
var retrieved_timeStamp = ... // timeStamp that you retrieve from firebase 
var date = NSDate(timeIntervalSinceReferenceDate: timeInterval(retrieved_timeStamp)) 
print(date1.daysFromTheDate(from: date as NSDate)) 

チェック条件

if date1.daysFromTheDate(from: date as NSDate) >= 2{ 

     //48 or more hours have passed now, Do the Job. Bingo!..  

    } 

見上げる: - Difference between two NSDates

+0

これを試しましたが、コードの拡張部分にエラーが返されました '宣言されていない型の使用'日付 ' – Sam

+0

このエラーを修正する方法があります@Dravidian – Sam

+0

今カレンダーは同じです – Sam

関連する問題