My code:
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .short
dateFormatter.dateStyle = .short
dateFormatter.locale = .current
lblDateTime.text = dateFormatter.string(from: date)
The problem is I need dateFormatter.dateStyle = .none
for today date. How to resolve it correctly? Is it possible to avoid manual date calculations to determine "today date"?
You can check if the given date is in today, Calendar
provides an appropriate API
let isDateInToday = Calendar.current.isDateInToday(date)
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .short
dateFormatter.dateStyle = isDateInToday ? .none : .short
dateFormatter.locale = .current
lblDateTime.text = dateFormatter.string(from: date)
If you can live with a four digit year and non-padded day and month, this is an alternative
let isDateInToday = Calendar.current.isDateInToday(date)
lblDateTime.text = date.formatted(date: isDateInToday ? .omitted : .numeric, time: .shortened)