如何在表视图中将日期格式从 1999-05-18 转换为 5 月 18 日 swift

How to convert date formate from 1999-05-18 to 18 may in uitable view swift

我 url 有带名字的 Dob 列表,响应出现在这种情况下“1993-03-28”......沿着名字,我必须将日期显示为 28 3 月 我创建了几个月的数组并开始工作,但它为所有成员打印所有相同的日期我的代码是

 var  dob = "\(arrdata[indexPath.section].dob)"

    print(dob)
    var dobSplit = dob.split(separator:"-")
    print (dobSplit)
    var mont = dobSplit[1]
    var dat = dobSplit[2]
    print(dat,mont)


    var monthArray = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
    print(monthArray)
    print(monthArray[Int(mont)!-1])

    var mo = monthArray[Int(mont)!-1]

    var finalDOB = dat + " " + mo
    print(finalDOB)


 // cell.dateLbl.text = "\(arrdata[indexPath.row+1].dob)"
    // instead of that I gave like this 
     cell.dateLbl.text = finalDOB 

对于所有名称,它显示相同的日期

EX:Rohit 3 月 28 日
拉胡尔 3 月 28 日
周日 3 月 28 日
库尔迪普 3 月 28 日

使用DateFormatter获取所需的日期格式,如

func getFormattedDate(from str: String) -> String? {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    if let date = dateFormatter.date(from: str) {
        dateFormatter.dateFormat = "dd MMM"
        return dateFormatter.string(from: date)
    }
    return nil
}

要在 cell 中添加 formattedDate,请使用 indexPath.row 而不是 indexPath.section,即

let dob = "\(arrdata[indexPath.row].dob)"
cell.dateLbl.text = getFormattedDate(from: dob)

仍然,如果它在 tableView 的每个 cell 中打印相同的日期,请尝试添加您正在为每个 [=] 使用的 string datesarray 14=]。还有 UITableViewDataSource 方法。

你打错了。变化:

var  dob = "\(arrdata[indexPath.section].dob)"

至:

var  dob = "\(arrdata[indexPath.row].dob)"

除此之外,使用 DateFormatter 将日期字符串从一种格式转换为另一种格式。至少,不要硬编码您自己的月份字符串。它不能很好地定位。如果您不想使用 DateFormatter.

正确执行此操作,请使用 Calendar shortMonthNames