NS1*_*518 5 ios parse-platform swift
我搜索了Parse博客,看看我是否可以得到解决方案,但没有得到任何满意的答案.所以我虽然我会在这里明确提出所有细节的问题,所以其他任何陷入类似情况的人都会觉得很容易上班.
需要:我有一个出发和返回文本字段,使用单个UIDatePicker更新.我想在Parse.com数据库中保存选定的日期.我可以查询和过滤数据.我还想在可能的情况下将本地时区存储在解析中.我正在检查天数,但这与此问题无关,因此不包括该代码.
成功与问题:我能够以String格式保存正确的日期和时间,但是当我尝试使用下面的代码以NSDate格式保存时,我的时间错了.
例如:我的日期选择和存储的解析结果如下:
出发日期:日期选择器选择:01/May/2015 01:00 AM +0530
Parse的存储日期:2015年4月30日,19:30
返回日期:日期选择器选择:02/May/2015 01:00 AM +0530
Parse的存储日期:2015年5月1日,19:30
//我的代码如下:
@IBOutlet var dOfTravelText: UITextField!
@IBOutlet var returnDateText: UITextField!
lazy var dateFormatter: NSDateFormatter = {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd/MMM/yyyy hh:mm a Z"
// dateFormatter.dateStyle = .MediumStyle
// dateFormatter.timeStyle = .ShortStyle
return dateFormatter
}()
@IBAction func travelDatePicker(sender: UITextField) {
datePickerView.minimumDate = NSDate()
datePickerView.datePickerMode = UIDatePickerMode.DateAndTime
sender.inputView = datePickerView
timeSelected = sender
datePickerView.addTarget(self, action: "handleDatePicker:", forControlEvents: UIControlEvents.AllEvents)
}
// Date Picker target - Displaying date in textfield
func handleDatePicker(sender: UIDatePicker) {
//var dateFormatter = NSDateFormatter()
//dateFormatter.dateFormat = "mm/dd/yyyy"
timeSelected.text = dateFormatter.stringFromDate(sender.date)
println("From Date \(dOfTravelText.text!)")
println("To Date \(returnDateText.text!)")
}
// Submitting the dates to parse backend
@IBAction func postBtn(sender: AnyObject) {
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let dateMakerFormatter = NSDateFormatter()
dateMakerFormatter.dateFormat = "dd/MMM/yyyy hh:mm a Z"
let dD = dateMakerFormatter.dateFromString("\(dOfTravelText.text!)")!
let departureD = NSDateFormatter.localizedStringFromDate(dD, dateStyle: .MediumStyle, timeStyle: .ShortStyle)
println("From-------...\(departureD)")
let rD = dateMakerFormatter.dateFromString("\(returnDateText.text!)")!
let returnD = NSDateFormatter.localizedStringFromDate(rD, dateStyle: .MediumStyle, timeStyle: .ShortStyle)
println("To-------\(returnD)")
var userPost = PFObject(className:"UserPost")
userPost["departureDate"] = dD // Works but has Wrong time
userPost["rDate"] = rD // Works but Wrong time
userPost["travelDate"] = dOfTravelText.text // Works but it is stored in String format
userPost["returnDate"] = returnDateText.text // Works but it is stored in string format
userPost.saveInBackgroundWithBlock {
(success, error: NSError?) -> Void in
if (success) {
// The object has been saved.
println("Saved")
} else {
// There was a problem, check error.description
println("Error")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
//解析数据库列并键入travelDate&returnDate定义为"String"类型
departureDate&rDate定义为"日期"类型
仅供参考:我使用的是平台 - iOS Swift(xcode 6.3,swift 1.2)数据库后端= Parse.com
由于 Parse 存储引用 GMT 的日期,因此当您在解析或检索它们时检查它们时,您可能会发现与本地时区的差异。一般来说,日期存储为 GMT。
您可以在 Parse 数据库中添加额外的字段并在其中存储本地时区。检索数据时,您可以使用该信息来解释引用该数据的区域中的日期。
根据您存储的数据类型,可能可以始终以用户本地时区解释日期,即使该时区已更改。如果保存的时区和用户时区不同(因此用户已移动),您还可以询问用户解决方案。
| 归档时间: |
|
| 查看次数: |
1960 次 |
| 最近记录: |