【问题标题】:How to turn a dateFormatter value such as Jul 07, 2019 into Jul 7, 2019 from timestamp?如何将 dateFormatter 值(例如 2019 年 7 月 7 日)从时间戳转换为 2019 年 7 月 7 日?
【发布时间】:2019-07-16 01:26:28
【问题描述】:

我创建了一个 convertDate 类,用于转换我的时间戳,即 Date().sinceReferenceDate(即从 2001 年 1 月 1 日凌晨 12:00 开始)。我有一个问题:当时间戳的日期超过 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)"

【问题讨论】:

  • 您应该考虑使用设备区域设置来确定日期格式,而不是假设您的首选方式适合所有人。
  • @JoGoFo 是的,你是对的......你会如何建议继续这样做? (谢谢)

标签: ios swift nsdate nsdateformatter


【解决方案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 语言环境输出“6 Jul”(例如)。

【讨论】:

  • 所以我不应该为格式化程序分配一个 .dateFormat 吗?
  • 如何摆脱2019?
  • @dfgdfgdfgdfg 查看我的更新,应该可以解决您的问题。
猜你喜欢
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多