Swift 中的日期格式 TODAY TOMORROW YESTERDAY

2023-11-22

我想将日期显示为6 月 13 日星期六.

如果日期是当天,则应显示Today像那样Tomorrow, 昨天.

我无法同时实现这两个目标

guard let date = Date(fromString: "16 September 2020",
                      format: "dd MMMM yyyy") else { return nil }

        let dateFormatter = DateFormatter()
        dateFormatter.dateStyle = .medium
        dateFormatter.doesRelativeDateFormatting = true

        header.titleLabel.text = dateFormatter.string(from: date)

对于上面的代码,我可以将日期显示为Today Tomorrow 昨天但其他日期没有显示6 月 13 日星期六。我尝试应用日期格式dateFormatter.dateFormat = "EEEE, MMM d"对于相同的dateFormatter它什么也没返回。


设置时 DateFormatter 表现不佳doesRelativeDateFormatting = true并尝试同时应用自定义格式。所以最简单的解决方案是使用 a 给出的格式Style and a Locale

let relativeDateFormatter = DateFormatter()
relativeDateFormatter.timeStyle = .none
relativeDateFormatter.dateStyle = .medium
relativeDateFormatter.locale = Locale(identifier: "en_GB")
relativeDateFormatter.doesRelativeDateFormatting = true

Example

let inputFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd"

let dates = ["2020-09-01", "2020-09-15", "2020-09-16", "2020-09-30"].compactMap { inputFormatter.date(from: $0)}

for date in dates {
    print(relativeDateFormatter.string(from: date))
}

2020 年 9 月 1 日
昨天
Today
2020 年 9 月 30 日

现在,如果您想应用自定义格式,在使用相同的 DateFormatter 实例时我还没有找到解决方案,因此我们需要为自定义格式创建一个新的格式并将其与检查一起使用,因此我们仅在以下情况下应用自定义格式:这不是今天等

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE, MMM dd"

for date in dates {
    let string = relativeDateFormatter.string(from: date)
    if let _ = string.rangeOfCharacter(from: .decimalDigits) {
         print(dateFormatter.string(from: date))
    } else {
        print(string)
    }
}

9 月 1 日星期二
昨天
Today
9 月 30 日星期三

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 中的日期格式 TODAY TOMORROW YESTERDAY 的相关文章

  • 如何使用 Vapor 和 Leaf 将图像从浏览器上传到 Amazon S3?

    我已经设置了 AWS S3 存储桶 并且可以使用 Vapor 3 和 Postman 上传文件 PUT request 和标头 x amz acl public read 但我想从浏览器中执行此操作 我使用的是 leaf 那么如何从浏览器上
  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • Objective-C UILabel 作为超链接

    我正在尝试做一个UILabel一个链接UIWebView 我怎样才能做一个UILabel作为超链接 您可以使用 UITapGestureRecognizer 它将实现与您想要的类似的功能 UILabel myLabel UILabel al
  • 无法在 Swift 中对闭包进行弱引用

    Update 我试着不弱化地写一下 好像也没有漏的情况 所以也许这个问题已经没有必要了 在 Objective C ARC 中 当你想让一个闭包能够在闭包内部使用它自己时 该块不能捕获对自身的强引用 否则它将是一个保留循环 因此您可以使闭包
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • 用户验证 Facebook 后未调用应用程序打开 Url 方法

    我已将 ios 应用程序中的 facebook 升级到 3 0 并使用提供的代码https developers facebook com docs howtos login with facebook using ios sdk http
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • UIViewControllerAnimatedTransitioning:旋转更改后黑屏片段

    我已经创建了一个视图控制器转换 只要我不更改设备方向 一切都正常 图 1 显示了应有的屏幕 然后我切换到下一个视图控制器 在其中更改方向 现在我回到第一个视图控制器并再次切换方向 然后我得到的结果如图 2 所示 出现黑色边框 请不要介意屏幕
  • 构建错误重复符号 arclite.o

    我正在尝试构建我的 Xcode 项目 但收到下面显示的错误 请帮我解决这个错误 提前谢谢您 duplicate symbol non lazy classes in Applications Xcode app Contents Devel
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 如何在button.addTarget操作中发送多个按钮?斯威夫特3

    如何将button和button2发送到我的pressButton2函数中 当用户触摸按钮2时 我需要更改按钮和按钮2的颜色 当我的 button2 addTarget 看起来像这样时 我收到错误 表达式列表中存在预期表达式 import
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • SpriteKit的更新函数:时间与帧率

    一般来说 我对编程和 Spritekit 很陌生 并且有兴趣探索毫秒和帧率之间的关系 以及如何使用更新函数作为两者之间的中介 帧率与毫秒 从本质上讲 帧速率和时间之间的主要区别在于时间始终一致 而帧速率则不然 由于密集的图形程序 它可能会下

随机推荐

  • Laravel 5 POST 路由到索引而不是存储

    我正在开发一个 Laravel 5 RESTful API 它似乎没有正确路由 POST 请求 这是我的routes php Route group array prefix gt api v1 function Route resourc
  • XAMPP 中的 phpMyAdmin 出现“配置中定义的 controluser 连接失败”

    我刚刚在 Windows XP 计算机上安装了 XAMPP 但收到一条错误消息 配置中定义的 controluser 连接失败 在安装 XAMPP 之前 我安装了一个 MySQL 数据库并且它有一个密码 我更改了 MySQL 的密码并将其放
  • 如何创建 custom.css 来覆盖 Bootstrap 4 alpha 6 中的变量

    我正在尝试自定义 Bootstrap 4 alpha 6 主题 我想将设置从 variable scss 文件复制到 custom scss 进行覆盖 但我在源代码中没有找到 custom scss 文件 如何在我的项目中添加这个 cust
  • 在 Linux Redhat/CentOS 上为 msodbcsql17 安装 unixODBC >= 2.3.1

    我尝试在使用 CentOS RedHat Linux 的 AWS EC2 上安装 msodbcsql17 这些是我遵循的来自 Microsoft 的步骤 LINK sudo su Download appropriate package f
  • [caffe]:检查失败:检查失败:hdf_blobs_[i]->shape(0) == num(200 vs. 6000)

    我有训练并将数据标记为 data mat 我有 200 个训练数据 包含 6000 个特征 标签为 1 1 已保存在 data mat 中 我正在尝试将数据转换为 hdf5 并使用以下命令运行 C affe load data mat hd
  • AVAudio播放器速率

    所以我尝试在 iOS 5 1 1 中以不同的速率播放声音文件 但完全没有运气 到目前为止 我已经尝试设置 AVAudioPlayer 的速率 player AVAudioPlayer alloc initWithContentsOfURL
  • Rails:违反外键约束

    我有三个模型 Book genre BookGenre 以下是关系 class BookGenre lt ActiveRecord Base belongs to book belongs to genre end class Book l
  • Spark Dataframe的分区数量

    谁能解释一下将为 Spark Dataframe 创建的分区数量 我知道对于 RDD 在创建它时我们可以提及分区的数量 如下所示 val RDD1 sc textFile path 6 但是对于 Spark 数据帧 在创建时看起来我们没有像
  • Scala:强制 A 不是 B 的子类型

    我试图根据参数是否扩展给定的类来重载方法 并且遇到了一些麻烦 使用迈尔斯 萨宾 Miles Sabin 的方法 我生成了以下代码 object ExtendedGenericTypes trait lt lt A B Encoding fo
  • IIS 7 上的 ASP.net MVC 返回空白页面

    我在将 ASP net MVC 2 RC 2 应用程序部署到我的生产环境时遇到一些问题 我让它在开发和测试中都运行良好 主要区别似乎是生产盒尚未升级到 IIS 7 5 当我访问该网站时 我只是看到一个空白页面 如中所述我在 IIS 上部署
  • bootstrap 4 modal-backdrop样式(特定modal)

    我想知道如何更改特定模态的模态背景颜色 不是模态的背景颜色 如果我使用 shown bs modal 并有一些延迟 则可以更改颜色 但我想立即更改背景颜色 希望有人可以帮忙 谢谢 div class modal fade div class
  • 群组成员支持的协议与现有成员的协议不兼容

    我面临与卡夫卡相关的问题 我正在使用当前的服务 Producer 将消息发送到 Kafka 主题 events 该服务正在使用kafka 2 12 v1 0 0 用 Java 编写 我正在尝试将其与示例项目集成spark streaming
  • CSS3 中计算操作数的 LESS 转义中的空白保留

    我想用 LESS 表达以下 CSS a min height calc 2em 4px 因此 为了防止 LESS 尝试计算 我使用 LESS 编写了表达式转义语法 a min height calc 2em 4px 然而 LESS 的缩小引
  • 使用 linq to xml 遍历 xml 树中的每个元素

    我想遍历 xml 中的每个元素和属性并获取名称和值 而无需提前知道元素的名称 我什至有一本关于 linq to xml with C 的书 它只告诉我当我已经知道元素的名称时如何查询以获取元素的值 下面的代码只提供了最高级别的元素信息 我还
  • 将 Enumerable.Range 转换为字符串列表

    在 Linq 中 如何将 Enumerable Range 1 31 转换为字符串列表 var list Enumerable Range 1 31 Select n gt n ToString ToList
  • 使用 Python/PIL 从图像中删除背景颜色

    我一直在努力让它发挥作用 但确实遇到了麻烦 所以非常感谢您的帮助 使用下面的代码 我想将具有指定 RGB 值的特征更改为白色 并将图像中的所有其他特征更改为黑色 即基本上从图像中提取特征 不幸的是 尽管我可以将我想要的特征 extract
  • Java 中序列化对象大小与内存中对象大小

    有没有一种方法可以从 Java 中的序列化对象大小 粗略地 估计内存对象大小 内存中的大小通常在可序列化大小的一半到两倍之间 最极端的例子可能是超过 80 个字节的字节 序列化后在内存中可以是 16 个字节 您可以使用探查器来告诉您对象使用
  • 从客户端的不同文件加载 WCF 配置

    许多人在 WCF 中面临的一个常见问题是无法从不同的配置文件加载客户端配置 当开发人员想要部署一些二进制文件以及独立的配置文件 也可能位于资源文件或另一个配置文件中 以避免修改主配置文件时 这是一种常见的情况 我找到了两个参考资料 http
  • 自定义对话框全屏打开

    我正在开发一个 Android 应用程序 我有一个关于自定义对话框的问题 我这样做是为了打开一个自定义对话框 protected void showSetFriendEmailDialog Create the dialog final D
  • Swift 中的日期格式 TODAY TOMORROW YESTERDAY

    我想将日期显示为6 月 13 日星期六 如果日期是当天 则应显示Today像那样Tomorrow 昨天 我无法同时实现这两个目标 guard let date Date fromString 16 September 2020 format