快速转换为Parse用户对象中字符串的日期
这不适用于我。我有一个值,我从显然是一个有效日期数据库得到,我可以把它打印出来罚款:快速转换为Parse用户对象中字符串的日期
let datefromu = "\(PFUser.current()!.object(forKey:"original_date_route_started")!)"
print("I fetched \(datefromu)")
,打印:I fetched 2017-08-10 15:50:43 +0000
。
我必须补充一点,如果我看在原数据库就被写成这样: 2017-08-10T15:50:43.436Z
所以我认为,输出已经从格式化日期字段输出的解析的方式吗?
底线,当我想填充日期变量我已经(original_date_route_started:日期)和字符串转换为日期,我越来越零!:
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
self.original_date_route_started = formatter.date(from: datefromu)
你想转换PFUser.current()!.object(forKey:"original_date_route_started")
到日期?那么你应该考虑的子类,以避免处理DateFormatters:
假设original_date_route_started
被正确地定义为解析Date
(如果没有,我会更新的答案):
import Foundation
import Parse
class UserParse: PFUser {
@NSManaged var original_date_route_started: Date?
}
如果你想设置一个新的价值到它:
var user = UserParse.current()!
user.original_date_route_started = Date(timeIntervalSinceNow: -3600 * 4) // 4hs ago
user.saveInBackground()
// Your sample code:
let datefromu = UserParse.current()!.original_date_route_started
self.original_date_route_started = datefromu
你只是有问题,另一个类,这不是01设置self.original_date_route_started
的价值?有两种方法做到这一点:
-
ISO8601DateFormatter
为iOS >= 10(见source code有详细介绍)let isoDateFormatter= ISO8601DateFormatter()
-
定制
DateFormatter
为iOS >= 2var isoDateFormatter: DateFormatter = { $0.locale = Locale(identifier:"en_US_POSIX") $0.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" $0.timeZone = TimeZone(secondsFromGMT: 0) // Or Locale(identifier: "GMT") return $0 }(DateFormatter())
转换字符串日期:
let testString = "2017-08-10T17:53:51+0000"
isoDateFormatter.date(from: testString)
我使用original_date_route_started作为我的课程的许多领域的日期值,不一定在解析用户的范围内。所以我有它的方式在上面,并继续作为self.original_date_route_started 它只是当我没有它的价值,然后我从分析用户在数据库中检索它,并且目前没有成功尝试设置它从该值 –
查看更新回答 – nathan
是的,在你的例子中,你可以然后设置一个变量,应该是Date类型如此:self.original_date_route_started = isoDateFormatter.date(from:testString)我不这么认为! - 这就是我想要做的! –
看起来'datefromu'已经是'Date'而不是'String'了。 – rmaddy
你确定你不想写'formatter.string(from:datefromu)'吗? –
@rmaddy你是对的。但是,我怎样才能将它设置为我的日期变量?斯威夫特不知道它的日期。 –