Reputation: 25
let date = datePicker.date
let newDate = dateFormatter.date(from: dateFormatter.string(from: date))
let currentDate = dateFormatter.date(from: dateFormatter.string(from: Date()))
let minDate = currentDate
datePicker.minimumDate = minDate
realm.beginWrite()
let newItem = ToDoListItem()
newItem.date = dateFormatter.date(from: dateFormatter.string(from: Date()))!
newItem.item = text
realm.add(newItem)
try! realm.commitWrite()
textView.text = dateFormatter.string(from: newDate!) + "\n\(newItem.date)"
print("NewDate: \(dateFormatter.string(from: currentDate!))")
I need current time but code is giving me Greenwich time. So I did this. In print I can get true result but in newItem.date is giving me wrong result. How can i fix this.
EDIT:
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .short
dateFormatter.locale = Locale.current
let date = datePicker.date
let newDate = dateFormatter.date(from: dateFormatter.string(from: date))
let currentDate = dateFormatter.date(from: dateFormatter.string(from: Date()))
let minDate = currentDate
datePicker.minimumDate = minDate
realm.beginWrite()
let newItem = ToDoListItem()
newItem.date = dateFormatter.date(from: dateFormatter.string(from: Date()))!
newItem.item = text
realm.add(newItem)
try! realm.commitWrite()
textView.text = dateFormatter.string(from: newDate!) + "\n\(newItem.date)"
print("NewDate: \(dateFormatter.string(from: currentDate!))")
Still not working.
Upvotes: 1
Views: 54
Reputation: 437472
When writing dates in Realm, no date formatter is needed:
realm.beginWrite()
let newItem = ToDoListItem()
newItem.date = Date() // not dateFormatter.date(from: dateFormatter.string(from: Date()))!
newItem.item = text
realm.add(newItem)
try! realm.commitWrite()
Converting the Date
to a String
and back to a Date
(with dateFormatter.date(from: dateFormatter.string(from: Date()))!
) is inefficient and unnecessary.
When preparing the string for the text view, then use the formatter:
// use this
textView.text = dateFormatter.string(from: newItem.date)
// do not use string interpolation of `Date` objects, such as this
//
// textView.text = ... + "\n\(newItem.date)"
Where
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .short
// date formatter’s default to the current time zone, so this is not necessary
//
// dateFormatter.locale = Locale.current
Upvotes: 2