gpt4 book ai didi

ios - swift 中的日期格式转换问题

转载 作者:行者123 更新时间:2023-11-29 01:10:18 25 4
gpt4 key购买 nike

我无法将字符串日期转换为 NSDate 对象。请检查下面的代码

let stringDate = "06:30 AM" 
let formatter = NSDateFormatter()
formatter.dateFormat="hh:mm a"
let local = NSLocale(localeIdentifier: "en_US")
formatter.locale=local
let date = formatter.dateFromString(stringDate)

最佳答案

输出符合预期,并且取决于您要实现的目标,您并没有做错任何事情。

您的 stringDate 实例仅包含有关一天中的时间的信息,而不是日期(先验也是您的唯一格式 NSDateFormatter formatter 是“感兴趣的”)。因此,以下代码片段会产生预期的 06:30 AM 输出:

let stringDate = "06:30 AM"
let formatter = NSDateFormatter()
formatter.dateFormat="hh:mm a"
let local = NSLocale(localeIdentifier: "en_US")
formatter.locale=local

if let date = formatter.dateFromString(stringDate) {
print(formatter.stringFromDate(date)) // 06:30 AM
}

NSDate 实例被定义为时间(一天中的日期和小时)中的单点,引用绝对引用日期:

NSDate objects encapsulate a single point in time, independent of any particular calendrical system or time zone. Date objects are immutable, representing an invariant time interval relative to an absolute reference date (00:00:00 UTC on 1 January 2001).

来自language reference for NSDate .

因此,除了一天中的时间之外,NSDate 实例还包括一个日期(即使不是,在您的情况下,使用或显示)。当您为上面的date 赋值时,Swift Playground 会显示正确日期一天中的时间;后者从绝对引用日期 2000-01-01 00:00:00 偏移 06:30。如果我们修改上面的示例以在最终打印语句中打印所有详细信息,我们会更清楚地看到这一点:

// ...

if let date = formatter.dateFromString(stringDate) {
formatter.dateStyle = .FullStyle
formatter.timeStyle = .FullStyle
print(formatter.stringFromDate(date))
/* Saturday, January 1, 2000 at 6:30:00 AM Central European Standard Time */
}

(关于您在下方的评论的补充)

请注意打印日期对象本身(例如上面的print(date))和打印日期的**格式化字符串表示形式**的区别使用格式化程序(例如 print(formatter.stringFromDate(date)))。前面的只是打印你的日期的 .description 属性,它是对象本身内容的默认格式字符串表示,而不是日期的受控格式输出:

Declaration

var description: String { get }

Description

A string representation of the date object. (read-only)

The representation is useful for debugging only.

There are a number of options to acquire a formatted string for a date including: date formatters (see NSDateFormatter and Data Formatting Guide), and the NSDate methods descriptionWithLocale:, dateWithCalendarFormat:timeZone:, and descriptionWithCalendarFormat:timeZone:locale:

请参阅我上面的代码块,了解如何使用 NSFormatter打印格式化日期。

关于ios - swift 中的日期格式转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35840510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com