Bu çözüme ulaşıp ulaşamayacağımı görmek için Parse blogunu aradım, ancak tatmin edici bir yanıt almadı. Bu yüzden, buradaki soruları tüm detaylarıyla açık bir şekilde soracağım, böylece benzer bir durumda kalan herkes çalışmayı kolay bulacaktır.Kaydetme Tarih ve saatte Parse backend
İhtiyacım: Tek bir UIDatePicker kullanılarak güncellenen bir gidiş ve dönüş metni alanına sahibim. Seçilen tarihleri Parse.com veritabanımda kaydetmek istiyorum. Verileri sorgulayıp filtreleyebileceğim. Mümkünse yerel saat dilimini ayrıştırmak istiyorum. Gün sayısını kontrol ederek çalışıyorum ancak bu soruyla alakalı değildi;
ex: my tarih seçimi ve ayrıştırma saklanan sonuç olarak aşağıdaki gibidir:
Ayrılış Tarihi: Tarih Seçici seçimi: 01/Mayıs/2015 01:00 0530
Parse içinde Saklanan tarihi: Nisan 30 2015, 19:30
Dönüş tarihi: Tarih Seçici seçimi:/2015 02/Mayıs 01:00 0530
Parse Depolanan tarihi: 2015, 01 Mayıs 19:30
// Kodum aşağıdaki gibidir:
@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")
}
}
}
}
// Ayrıştırma veritabanı sütun ve travelDate & Geri gönderme yazın "String"
departureDate & rDate Çeşidi olarak tanımlanmaktadır "Tarih" Sadece bilgi için
türde olanlar olarak tanımlanır: Ben Platformunu kullanıyorum - iOS Swift (xcode 6.3, hızlı 1.2) Veritabanı arka planı = Parse.com
Ayrıştırma, tarihi GMT'ye kaydeder. Saat dilimini depolamak için ayrıştırmak için fazladan bir alan ekleyebilir ve veriyi okurken o bölgeye başvuruda bulunmak için verileri okurken kullanabilirsiniz. – Volker
@Volker Hızlı yanıt için teşekkür ederiz. Benim yaptığım şey, postLocZone = NSTimeZone.localTimeZone() kısaltmasıdır! ve Parse arka ucuma kaydettim. Daha sonra alınırken dateFormatter.timeZone = NSTimeZone (kısaltma: "\ (locationZone)") kullanılır. Bu bana gerekli sonuçları veriyor. Ama bunu yapmanın doğru yolu bu mu? Kullanıcı konumu değiştirirse Coz, yayınlanma tarihi değişmez (NSTimeZone da değişecek)? Burada kafam karıştı. Bu konuda görüşlerinizi iletebilirseniz gerçekten yardımcı olurdum.Teşekkürler :) –
Bu her zaman bir sorun - kullanıcının yerel saat diliminin ve kaydedilen zaman diliminin farklı olup olmadığını kontrol edebilir ve örneğin bir çözüm için kullanıcıdan sorun. Verilerinize bağlı olarak, yalnızca yerel saat dilimini sormadan değiştirmek de uygun olabilir. – Volker