我制作了一个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)"

最佳答案

要直接回答您的问题,您只需要在日期上使用单个“ 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”。

关于ios - 如何将timeFormat的dateFormatter值(如2019年7月7日)转换为2019年7月7日?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57048948/

10-12 14:39