为什么Date格式化程序正确返回日期,但是当将字符串转换为NSDate时,时间显示为00:00:00

时间:2017-05-18 11:32:12

标签: swift swift2 nsdateformatter

我有一个功能,我必须从我自己的应用程序的sqlite数据库中检索日期。我使用格式化程序保存了它

我的工作流程

1 ..在应用程序确实输入后台(保存为字符串)

时向数据库保存日期

2 ..当应用程序再次变为前景时,我也会在该时间点创建一个日期实例。现在我有两个约会。

3 ..将两个日期转换为正确的格式并获得秒数差异。

从日期转换为字符串 - >

let formatter = NSDateFormatter()
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.Z"
    let myString = formatter.stringFromDate(NSDate()) // i get value"2017-05-18 16:49:38.+0530"

但是当我将其重新转换为NSDate时(我的意思是当我再次将其转换为字符串时) - >

 let formatter = NSDateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.Z"

        let lastloginDate=formatter.dateFromString(lastLogin) // i get value(Converting back to string \n for checking as the time difference was zero ) 2017-05-18 00:00:00.+0530

我想比较两个日期,例如会话服务,我这样做是通过获取日历组件的分钟差异。然而,既然它的到来就像这样,他的差异始终为零。

 let myString1 = formatter.stringFromDate(date1)
        let myString2 = formatter.stringFromDate(date2)
        print("DATE 1\(myString1) DATE 2 \(myString2)")

        let components = calendar.components(flags, fromDate: date2, toDate: date1, options: [])
        let diff = components.second
             print("Diffrence is \(diff)") // Always zero 

这是为什么?

1 个答案:

答案 0 :(得分:1)

试试这个。

    let myString1 = formatter.stringFromDate(date1)
    let myString2 = formatter.stringFromDate(date2)
    print("DATE 1\(myString1) DATE 2 \(myString2)")

    let components = NSCalendar.currentCalendar().components([.Month, .Day, .Hour, .Minute, .Second], fromDate: myString1, toDate: myString2, options: [])
    let diff = components.second
         print("Difference is \(diff)")