将字符串中的时间快速添加到日期对象中
Posted
技术标签:
【中文标题】将字符串中的时间快速添加到日期对象中【英文标题】:Adding time from string into date object swift 【发布时间】:2021-03-31 12:59:26 【问题描述】:我有时间以字符串形式从服务中回来,例如“12:30 PM”。
我可以得到这个时间,但我想在当前日期添加这个时间。像这样
31/3/2021 12:30 PM
当前日期为日期对象,即将到来的时间为字符串格式。
请让我知道这样做的正确方法是什么?我现在正在从字符串中获取 12、30 并通过日历进行设置。但不知道如何设置 am pm 。请让我知道如何使用日期对象附加时间。提前致谢。
【问题讨论】:
【参考方案1】:首先,如果这是您从服务中获得的日期字符串,那么它是不完整的。它需要一个时区。
我会这样做:
假设服务总是使用同一个时区,找出那个时区。
为该日期字符串格式创建一个日期格式化程序,包括 AM/PM 位。
将日期格式化程序设置为使用步骤 1 中的时区。
使用 DateFormatter 将日期字符串转换为 Date 对象。
使用当前日历将小时和分钟值提取到 DateComponents 对象中。
获取当前日期,并使用日历函数date(bySettingHour:minute:second:of:matchingPolicy:repeatedTimePolicy:direction:)
将当前日期的小时和分钟设置为您从第 5 步获得的值。
您应该在 Xcode 帮助系统中搜索:
日期和时间(概览) 日历计算(专门针对日期和时间进行数学计算的讨论) 日期格式化程序。 (有关用于构建 dateFormat 字符串的字符的信息,请参阅 this article。) 日历 日期组件日历
【讨论】:
这不是代码编写服务。尝试我发布的步骤,如果您无法使其正常工作,请编辑您的问题以显示您已尝试过的内容,我们可以帮助您使其正常工作。 谢谢,我什么都没做。如果您可以通过发布脚本来提供帮助,那就可以了。还是谢谢 不,我不会为你写“脚本”(代码)。自己尝试一下,如果无法正常工作,请编辑您的问题以显示您尝试过的内容和无效的内容,我们可以为您提供帮助。【参考方案2】:您可以通过使用正确的 timeZone
、calendar
、defaultDate
和 dateFormat
设置您的 DateFormatter
来做到这一点。这是一个例子:
import Foundation
let parser = DateFormatter()
parser.calendar = Calendar(identifier: .gregorian)
parser.timeZone = TimeZone(identifier: "US/Eastern")!
parser.defaultDate = parser.calendar!.date(
from: DateComponents(
timeZone: parser.timeZone!, era: 1,
year: 2021, month: 3, day: 31,
hour: 12, minute: 0, second: 0))!
parser.dateFormat = "hh:mm a"
print(parser.date(from: "12:30 PM"))
输出:
Optional(2021-03-31 16:30:00 +0000)
【讨论】:
以上是关于将字符串中的时间快速添加到日期对象中的主要内容,如果未能解决你的问题,请参考以下文章
防止 Pandas to_json() 将时间组件添加到日期对象