Skip to main content
 首页 » 操作系统

ios之如何将解析日期对象转换为字符串

2024年01月01日43mq0036

新手提醒

我正在尝试从 PFUser 查询日期,然后将其格式化为 NSDate,以便它更有用。当我尝试将对象转换为 NSString 以便我可以使用 NSDateFormatter() 格式化它时,问题就开始了

    var user = PFUser.query() 
    user.whereKey("username", equalTo: PFUser.currentUser().username) 
    user.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 
        if error == nil { 
            for object in objects { 
                var lastActive = object["lastActive"] 
                if lastActive != nil {    
                let newLastActive = lastActive as String //problem starts here!! 
                let dateFormatter = NSDateFormatter() 
                dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
                let date = dateFormatter.dateFromString(newLastActive) 
                println("new date \(date)") 
                } 
 
            } 
        } 
    } 

正确的做法是什么?此外,如果我没有将变量类型指定为 AnyObject,它就会一直作为可选类型出现。如何在将其转换为 String 时去掉可选的?

编辑:对象“lastActive”是解析云设置的日期,不是字符串。

请您参考如下方法:

如果您的 lastActive 单元格返回一个日期,您可以使用:

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
let date = dateFormatter.stringFromDate(lastActive as NSDate) 

您不必将日期转换为字符串,您将通过日期格式化程序创建一个日期字符串。 但是如果你这样做,你可以使用 lastActive 作为! String insted of lastActive as String

已更新

for object in objects { 
            var lastActive = object["lastActive"] 
            if lastActive != nil { 
                let dateFormatter = NSDateFormatter() 
                dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
                let date = dateFormatter.stringFromDate(lastActive as NSDate) 
                println(date) 
            } 
        } 

我尝试使用上面的这段代码,如果您已将列解析设置为最新,它应该可以工作。