Ios 如何在uitable view中将日期格式从1999-05-18转换为5月18日
我有一个网址,上面有dob的名单和名字,回应出现在这个场景“1993-03-28”。。。。。。。我已经创建了一个月数组,但它为所有成员打印所有相同的日期。我的代码是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
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)"