当前位置: 首页 > 面试题库 >

如何创建Swift Date对象?

柯星华
2023-03-14
问题内容

如何从Swift XCode中的日期创建日期对象。

例如在JavaScript中,你会做: var day = new Date('2014-05-20');


问题答案:

雨燕有自己的Date类型。无需使用NSDate

在Swift中,日期和时间存储在64位浮点数中,该浮点数用于测量自2001年1月1日UTC的参考日期以来的秒数。这在Date结构中表示出来。以下内容将为您提供当前日期和时间:

let currentDateTime = Date()

若要创建其他日期时间,可以使用以下方法之一。

方法一

如果您知道2001年参考日期之前或之后的秒数,则可以使用该秒数。

let someDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM

方法2

当然,使用诸如年,月,日和小时(而不是相对秒)之类的方法来制作会更容易Date。为此,您可以用于DateComponents指定组件,然后Calendar创建日期。在Calendar给出了Date上下文。否则,它将如何知道用哪个时区或日历表示?

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1980
dateComponents.month = 7
dateComponents.day = 11
dateComponents.timeZone = TimeZone(abbreviation: "JST") // Japan Standard Time
dateComponents.hour = 8
dateComponents.minute = 34

// Create date from components
let userCalendar = Calendar.current // user calendar
let someDateTime = userCalendar.date(from: dateComponents)

其他时区缩写可以在此处找到。如果您将其留空,则默认值为使用用户的时区。

方法3

最简洁的方式(但不一定是最好的方式)可以使用DateFormatter

let formatter = DateFormatter()
formatter.dateFormat = "yyyy/MM/dd HH:mm"
let someDateTime = formatter.date(from: "2016/10/08 22:31")

在统一的技术标准表明其他格式是DateFormatter支持的。

笔记

请参阅我的完整答案,以了解如何以可读格式显示日期和时间。还请阅读以下优秀文章:

  • 如何在Swift 3中使用日期和时间,第1部分:日期,日历和DateComponents
  • 如何在Swift 3中使用日期和时间,第2部分:DateFormatter
  • 如何在Swift 3中使用日期和时间,第3部分:日期算术


 类似资料:
  • SwiftDate 是个非常强大的日期/日历框架,完全使用 Swift 编写。SwiftDate 部分是基于 QuantLib 的,著名的定量金融学库,SwiftDate 对金融应用非常友好,同时也有强大的商业日历功能。 创建日期: var d1 = Date(year : 2014, month : 5, day : 15)var d2 = Date(string : "2014-05-15")

  • 问题内容: 我一直在阅读《Oracle数据库JDBC开发人员指南》和 创建阵列对象 服务器端内部驱动程序 oracle.jdbc.OracleConnection oracle.jdbc.OracleDriver 但是我仍然无法编写一个最低代码,可以在其中创建ARRAY 按照创建ARRAY对象中的指示。 我正在使用Oracle数据库JVM。 我尝试了以下方法: 例子1 失败: 例子2 失败: 免责

  • 问题内容: 如何在Python中创建对象(类实例)列表? 还是这是不良设计的结果?我需要这个原因是因为我有不同的对象,并且需要在以后的阶段中处理它们,所以我将继续将它们添加到列表中,然后再调用它们。 问题答案: 存储对象实例列表非常简单

  • 问题内容: 我需要使用NDK以及JNI将一些功能实现到Android应用程序中。 这是我所写的C代码: 我的问题或多或少在代码内得到了解释。也许还可以:函数(jobject)的返回类型可以吗? 现在,NDKTest.java: 当我尝试运行代码时,它不起作用。 问题答案: 既然是内部类,那么获得它的方法就是 内部类的约定在权威规范中并未真正明确记录,但是根深蒂固地存在于如此多的工作代码中,因此不太

  • 我试图将每个列表都位于嵌套对象内的webservice模型映射到更简单的对象。 模型1 映射非常简单: 映射工作正常,除了一个问题。当我将带有null子级的父母映射到父母2并返回父母时,儿童对象是用空列表创建的。有什么方法可以防止这种情况吗?

  • 问题内容: 我需要在JavaFX中创建一个对话框。我知道我可以通过修改模式,所有者和可调整大小的属性来使舞台表现得像对话框。 但是,如何从舞台窗口中隐藏“最小化”和“最大化”按钮?典型的对话框只有“关闭”按钮。 问题答案: 在Windows 7下,在显示窗口之前初始化为StageStyle.UTILITY将创建一个仅具有关闭按钮而没有最小化或最大化按钮的窗口: 如果您需要一整套基本的JavaFX对