2016-10-23 3 views
2

Я связал приложение, которое я сделал в базе данных Firebase.Разница между отметкой времени и текущей датой

Приложение отправляет Firebase время как timeIntervalSinceReferenceDate при нажатии кнопки. Пример значения - 498898978852.928.

Я хочу, чтобы этот номер отличался тем, что пользователь нажал ту же кнопку более, чем 48 часов назад.

Есть ли способ измерить период времени 48 часов или использовать другой метод?

Я использую быстрые 2 и Xcode 7!

+0

Почему Firebase включена как тег? – Jay

ответ

3

Swift 3. Если вы используете Swift 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 

Сделать расширение NSDate за пределами области видимости класса

extension NSDate { 

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

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

декларации: -

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

Тогда в вашем .Принимать event 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

Смежные вопросы