Reputation: 1034
I am converting date to day, but if I just println() the current selected date in the datepicker, I get wrong time and wrong date.
@IBOutlet weak var datepicker: UIDatePicker!
@IBAction func displayDay(sender: AnyObject) {
var chosenDate = self.datepicker.date
println(chosenDate)
I've following date selected date.
And click on the button underneath datepicker. I get following line in output
2015-01-11 20:17:37 +0000
Can somebody tell me.what's wrong with output?
Upvotes: 6
Views: 11647
Reputation: 3502
Swift 5
let yourLocalDate = Date().description(with: .current)
Upvotes: -1
Reputation: 124
Use this method to get correct date:
func getDateStamp(date:String)-> String{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss +SSSS"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
guard let date = dateFormatter.date(from: date) else {
// assert(false, "no date from string")
return ""
}
dateFormatter.dateFormat = "dd MMMM,yyyy" //"yyyy-MM-dd"
dateFormatter.timeZone = TimeZone.current
let st = dateFormatter.string(from: date)
return st
}
Upvotes: 1
Reputation: 236420
This is fine because the date picker uses its local time but it stores UTC time. It means your local time offset is -5h. You can do as follow to extract the right date and time from it:
extension NSDate {
var localizedDescription: String {
return descriptionWithLocale(NSLocale.currentLocale()) ?? ""
}
}
println(chosenDate.localizedDescription)
Swift 3 or later
extension Date {
var localizedDescription: String {
return description(with: .current)
}
}
Date().localizedDescription // "Monday, October 16, 2017 at 2:24:11 AM Brasilia Summer Time"
Upvotes: 10
Reputation: 4570
Swift 3.0 - If You want to get a result in date format then use the following code.
extension Date {
var convertedDate:Date {
let dateFormatter = DateFormatter();
let dateFormat = "dd MMM yyyy";
dateFormatter.dateFormat = dateFormat;
let formattedDate = dateFormatter.string(from: self);
dateFormatter.locale = NSLocale.current;
dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00");
dateFormatter.dateFormat = dateFormat as String;
let sourceDate = dateFormatter.date(from: formattedDate as String);
return sourceDate!;
}
}
print(pickerView.date.convertedDate)
Upvotes: 2