首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用DateFormatter显示昨天、今天和明天

如何使用DateFormatter显示昨天、今天和明天
EN

Stack Overflow用户
提问于 2020-08-31 09:39:43
回答 2查看 345关注 0票数 1

目前,我一直在尝试不同的方法来实现这一壮举。我在这里格式化它的方式生成当前日期8月30日下午6:28

代码语言:javascript
复制
import SwiftUI

struct TestDate: View {
var time = Date()

var dateFormatter: DateFormatter {
    let df = DateFormatter()
    df.dateFormat = "MMM d, h:mm a"
    return df
}


var body: some View {
    Text("\(time, formatter: dateFormatter)")
}
}

这正是我想要的。但是,我希望昨天、今天和明天出现,而不是"Aug 30"/the相对当前日期。如何在SwiftUI中做到这一点?

编辑:我的意思是当我使用DatePicker并更新日期时。我希望字符串是“昨天下午6:50”,而不是“8月29,6:50 PM”。所有超过昨天和明天的日期将显示为"MMM d,h:mm a“

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-31 11:32:05

你需要doesRelativeDateFormatting (别忘了添加样式),例如:

代码语言:javascript
复制
var dateFormatter: DateFormatter {
    let df = DateFormatter()
    df.dateFormat = "MMM d, h:mm a"

    df.dateStyle = .medium
    df.timeStyle = .short
    df.doesRelativeDateFormatting = true

    return df
}
票数 1
EN

Stack Overflow用户

发布于 2020-09-01 02:54:45

建立在@Asperi所说的之上。我实现这一点的方法是,我编写了一个函数来按照我想要的方式格式化。

代码语言:javascript
复制
import SwiftUI

struct TestDate: View {
var time = Date()




var body: some View {
    Text("\(format(date: time))")
}

//this is where the function is I'm sure this could be cleaned up but here it is in its long form.
func format(date: Date) -> String {
      let calendar = Calendar.current
  if calendar.isDateInToday(date){
          let df = DateFormatter()
          df.dateStyle = .short
          df.timeStyle = .short
          df.doesRelativeDateFormatting = true
      return df.string(from: date)
      
      }
else if calendar.isDateInYesterday(date){
      let df = DateFormatter()
          df.dateStyle = .short
          df.timeStyle = .short
          df.doesRelativeDateFormatting = true
      return df.string(from: date)
  }
  else if calendar.isDateInTomorrow(date){
      let df = DateFormatter()
          df.dateStyle = .short
          df.timeStyle = .short
          df.doesRelativeDateFormatting = true
      return df.string(from: date)
      } else {
          let df = DateFormatter()
          df.dateFormat = "MMM d, h:mm a"
      return df.string(from: date)
  }
  
  }

This is also something that helped

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63663728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档