【问题标题】:How to convert HH:mm:ss only to am/pm in swift?如何快速将 HH:mm:ss 转换为 am/pm?
【发布时间】:2022-01-12 22:51:23
【问题描述】:

所以我有一个字符串格式的时间 HH:mm:ss(例如 08:30:00)。我希望能够将其转换为上午 8:30。

通常情况下,如果我有年、月、日,那么进行转换会很简单,但在这种情况下我不需要它。

我最初的计划是获取当前 Date() 然后为其分配时间,然后将其转换为 H:mm a 的新格式,但我无法成功地做到这一点。这意味着我只能将其转换为具有 2000 年 1 月 1 日且时间设置为 UTC 的 Date 对象。

我是不是想多了?有没有更简单的方法而不进行任何转换?我只想在不更改任何时区的情况下以H:mm a 格式显示时间。

【问题讨论】:

标签: ios swift date


【解决方案1】:

您需要创建一个具有指定时间值的Date。为此,我会简单地创建一个 Date 的新实例,然后使用 Calendar 将时间设置为所需的值

var date = Date()

let cal = Calendar.current
// Please note, this returns an optional, you will need to deal
// with, for demonstration purposes, I've forced unwrapped it
date = cal.date(bySettingHour: 8, minute: 30, second: 0, of: date)!

从那里,您使用DateFormatter 将结果格式化为String

let formatter = DateFormatter()
formatter.dateFormat = "hh:mm a"

formatter.string(from: date)

现在,如果您从 String 值(HH:mm:ss)开始,您实际上可以使用 DateFormatter 来解析它,例如...

let value = "08:30:00"
let parser = DateFormatter()
parser.dateFormat = "HH:mm:ss"
// Again, this is forced unwrapped for demonstration purposes
let parsedDate = parser.date(from: value)!

【讨论】:

  • 嗯,关于你的第一个区块。这是我的想法,但我想知道是否有办法不必拆分字符串来获取单独的 int 值?如果没有,那我想我会拆分字符串。
  • @harvey_burns 好吧,事实证明(如果你看到我的最后一次更新),你可以使用DateFormatter 将基于时间的String 转换为Date,一旦你有了@987654335 @,然后你可以通过另一个 DateFormatter 运行它。因为我不知道你必须从什么价值观开始,我只是覆盖我的基础
猜你喜欢
  • 2014-02-06
  • 2021-07-26
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多