我制作了一个convertDate类,用于转换时间戳,该时间戳为Date()。sinceReferenceDate(即从2001年1月1日12:00 am开始)。我有一个问题:时间戳的日期超过3周前,我使用日期格式(月,日,年(如果早于当前年份)),但是问题是如果日期不超过10,那么一天看起来像这样:01,02,03(7月1日,7月2日),依此类推,而我需要将其设置为1,2,3(7月1日,7月2日)。我一直找不到解决方案,这是我的代码:
let nowTime = Date.timeIntervalSinceReferenceDate
let finalTime = nowTime - mediaTimestamp //how long ago in seconds...
//For timestamp coverting below
print(mediaTimestamp, "<-- datfasfePass")
let timeToModify = Date(timeIntervalSinceReferenceDate: mediaTimestamp)
let formatter = DateFormatter()
formatter.dateFormat = "MMM dd, yyyy"
//Below is for excluding the 2019 if the current year is 2019
let formatterForYear = DateFormatter()
formatterForYear.dateFormat = "yyyy"
let currentYear = "2019" //this is hardcoded right now
let finalYearDetermine = formatterForYear.string(from: timeToModify)
let currentFormatterYear = finalYearDetermine
print(currentFormatterYear, "<-- currentFormatterYear")
var finalDate = formatter.string(from: timeToModify)
if currentYear == finalYearDetermine {
//then its currently 2019 whitch means we exclude the 2019
formatter.dateFormat = "MMM dd"
finalDate = formatter.string(from: timeToModify)
} else {
//do nothing to dateformtter
}
finalDateString = "\(finalDate)"
答案 0 :(得分:1)
要直接回答您的问题,您只需要在日期上使用单个'd',例如:
formatter.dateFormat = "MMM d"
但是,您应该考虑使用设备区域设置来显示日期。如果您未设置格式或覆盖locale
属性,则DateFormatter会自动执行此操作:
let formatter = DateFormatter()
formatter.dateStyle = .medium
编辑: 要删除年份组件,同时仍支持设备区域设置,可以使用:
let formatter = DateFormatter()
formatter.setLocalizedDateFormatFromTemplate("MMMd")
例如,对于en_US语言环境,这将输出“ Jul 6”,但是对于en_AU语言环境,将输出“ 7 Jul”。