如何在 NSDate 中添加一天?


在本文中,您将学习如何在 Swift 语言中向日期添加天数。

很多时候,您可能需要通过更改几天、几周、几个月等来修改日期。Swift 提供了一个内置的概念来向日期添加组件。让我们看一些例子。

让我们简要了解一下这些示例中将使用的一些常见概念。

日历类

Swift 中的 Calendar 类是一个表示日历的类,日历是组织日期的系统。它用于执行与日历相关的计算,例如确定一个月的天数或一周的第一天。

日期格式化程序类

Swift 中的 DateFormatter 类是一个用于在日期和字符串之间进行转换的类。它可以用于从字符串解析日期或将日期格式化为字符串。

如何向自定义日期添加一天?

示例 1

算法

  • 步骤 1 - 获取当前日历引用对象

  • 步骤 2 - 创建 DateFormatter 类的对象

  • 步骤 3 - 设置时区

  • 步骤 4 - 创建输入日期字符串

  • 步骤 5 - 根据日期字符串设置日期格式

  • 步骤 6 - 将日期字符串转换为日期对象

  • 步骤 7 - 使用天数的值添加日期组件

示例

import Foundation
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.timeZone = .init(abbreviation: "UTC")
let dateString1 = "08-10-2022"
dateFormatter.dateFormat = "dd-MM-yyyy"
if let dateObject = dateFormatter.date(from: dateString1),
   let dateByAddedDay = calendar.date(byAdding: .day, value: 1, to: dateObject) {
    print("the target date: \(dateObject) and date after adding one day: \(dateByAddedDay)")
}

输出

the target date: 2022-10-08 00:00:00 +0000 and date after adding one day: 2022-10-09 00:00:00 +0000

示例 2

import Foundation
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.timeZone = .init(abbreviation: "UTC")
let dateString2 = "12/23/2022"
dateFormatter.dateFormat = "MM/dd/yyyy"
if let dateObject = dateFormatter.date(from: dateString2),
   let dateByAddedDay = calendar.date(byAdding: .day, value: 1, to: dateObject) {
    print("the target date: \(dateObject) and date after adding one day: \(dateByAddedDay)")
}

输出

the target date: 2022-12-23 00:00:00 +0000 and date after adding one day: 2022-12-24 00:00:00 +0000

说明

我们在上面的示例中更改了日期格式,然后添加了天数。

如何向当前日期添加一天?

import Foundation
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.timeZone = .init(abbreviation: "UTC")
let targetDate = Date()
if let dateByAddedDay = calendar.date(byAdding: .day, value: 1, to: targetDate) {
    print("the target date: \(targetDate) and date after adding one day: \(dateByAddedDay)")
}

输出

the target date: 2023-01-06 16:49:29 +0000 and date after adding one day: 2023-01-07 16:49:29 +0000

请注意,输出可能因您学习此内容的日期而异。

如何向日期添加其他组件?

同样,您可以添加其他日期组件,例如周、月、年等。

示例

import Foundation
let calendar = Calendar.current
let dateFormatter = DateFormatter()
dateFormatter.timeZone = .init(abbreviation: "UTC")
let dateString = "08-10-2022"
dateFormatter.dateFormat = "dd-MM-yyyy"
if let dateObject = dateFormatter.date(from: dateString) {
    
    print("The target date: \(dateObject)")
    
    if let dateByAddedDays = calendar.date(byAdding: .day, value: 7, to: dateObject) {
        print("Next Week: \(dateByAddedDays)")
    }
    
    if let dateByAddedMonth = calendar.date(byAdding: .month, value: 1, to: dateObject) {
        print("Next Month: \(dateByAddedMonth)")
    }
    
    if let dateByAddedYear = calendar.date(byAdding: .year, value: 1, to: dateObject) {
        print("Next Year: \(dateByAddedYear)")
    }
}

输出

The target date: 2022-10-08 00:00:00 +0000
Next Week: 2022-10-15 00:00:00 +0000
Next Month: 2022-11-08 00:00:00 +0000
Next Year: 2023-10-08 00:00:00 +0000

说明

在上面的示例中,您转换了日期以获取下一周、下一月和下一年。

结论

Calendar 和 DateFormatter 类可用于通过添加不同的日期组件来操作日期。您可以修改自定义日期和当前日期。

更新于:2023年9月7日

201 次查看

启动你的职业生涯

完成课程获得认证

开始学习
广告