Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在uitable view中将日期格式从1999-05-18转换为5月18日_Ios_Swift_Uitableview_Nsdateformatter - Fatal编程技术网

Ios 如何在uitable view中将日期格式从1999-05-18转换为5月18日

Ios 如何在uitable view中将日期格式从1999-05-18转换为5月18日,ios,swift,uitableview,nsdateformatter,Ios,Swift,Uitableview,Nsdateformatter,我有一个网址,上面有dob的名单和名字,回应出现在这个场景“1993-03-28”。。。。。。。我已经创建了一个月数组,但它为所有成员打印所有相同的日期。我的代码是 var dob = "\(arrdata[indexPath.section].dob)" print(dob) var dobSplit = dob.split(separator:"-") print (dobSplit) var mont = dobSplit[1] var dat

我有一个网址,上面有dob的名单和名字,回应出现在这个场景“1993-03-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日

Kuldeep 3月28日

使用日期格式化程序获取所需的日期格式,如

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
,请使用
indepath.row
而不是
indepath.section
,即

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

但是,如果它在
tableView
的每个
单元格中打印相同的日期,请尝试添加用于每个
单元格的
字符串日期的
数组。还有
UITableViewDataSource
方法。

您有输入错误。更改:

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


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

正确执行,您可以显示示例响应,还是可以使用
DateFormatter
打印(dob)。更简单。你的数据访问不应该基于行而不是节吗?重新打开,因为问题不是关于日期格式。这不是问题所在。您正在进行大量打印,您首先在哪一行打印不正确的值?在第一次打印时,是否已经打印了(
print(dob
)?您应该添加一个区域设置(
en\u US\u POSIX
)至少要获得正确的月份缩写,而且建议使用固定日期格式。@vadian这是一种不需要特殊区域设置的情况。只有在将字符串解析为
date
以及该字符串具有英文月份名称和/或有时间时才需要。这两者都没有。@rmaddy显式
monthArray
表示OP需要英文月名,字符串首先解析为
日期
。如果没有区域设置,您将获得当前区域设置中的月名。@vadian 1。显式的月名可能意味着OP不知道这不是一个好主意。这并不能证明他们只需要所有用户的英文月名。但是ain,可能是这样。2.事实上,如果应用程序本地化为用户首选语言,则只能获得用户首选语言的月份名称。@PGDev感谢它的工作。我保留部分的原因意味着我有另一个视图,因为我必须只显示表视图的第一个响应。
var  dob = "\(arrdata[indexPath.row].dob)"