将字符串中的时间快速添加到日期对象中

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】:

您可以通过使用正确的 timeZonecalendardefaultDatedateFormat 设置您的 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() 将时间组件添加到日期对象

JavaScript 之日起对象(转)

javascript基础学习

谈谈javascript中的日期Date对象

无法快速将特定日期和时间添加到 UserNotifications

将 ISO 8601 日期时间字符串转换为 **Date** 对象时,如何将日期时间重新定位到当前时区?