如何在方便的视图中将日期格式从1999-05-18转换为18

时间:2019-07-16 06:21:08

标签: ios swift uitableview nsdateformatter

我的URL中包含带有名称的dob列表,并且在这种情况下响应为“ 1993-03-28” .......沿着名称,我必须将日期显示为3月28日,我创建了数组个月的工作时间,但是它为我的代码为所有成员打印所有相同的日期

 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日
    Sohit 3月28日
    科尔迪普3月28日

2 个答案:

答案 0 :(得分:0)

使用 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
}

要在formattedDate中添加cell,请使用 indexPath.row 代替indexPath.section,即

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

如果在cell的每个tableView中打印相同的日期,请尝试添加每个{{1}所用的array的{​​{1}} }。还有string dates方法。

答案 1 :(得分:0)

您有错字。更改:

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

收件人:

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

此外,使用DateFormatter将日期字符串从一种格式转换为另一种格式。至少不要硬编码自己的月份字符串。它本地化不好。如果您不想通过Calendar shortMonthNames正确使用DateFormatter