[Swift通天遁地]五、高级扩展-(3)日期和时间类型的扩展方法

时间:2022-12-23 17:09:02

本文将演示日期和时间类型的扩展方法。

首先确保在项目中已经安装了所需的第三方库。

点击【Podfile】,查看安装配置文件。

1 platform :ios, ‘12.02 use_frameworks!
3 
4 target 'DemoApp' do
5     source 'https://github.com/CocoaPods/Specs.git'
6     
7     pod 'AFDateHelper', '~> 4.2.2'
8 end

根据配置文件中的相关配置,安装第三方库。

然后点击打开【DemoApp.xcworkspace】项目文件。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

现在开始编写代码,调用第三方库对日期和时间的扩展方法。

  1 import UIKit
  2 //在当前的类文件中,引入已经安装的第三方类库
  3 import AFDateHelper
  4 
  5 class ViewController: UIViewController {
  6 
  7     override func viewDidLoad() {
  8         super.viewDidLoad()
  9         // Do any additional setup after loading the view, typically from a nib.
 10         
 11         //将一个字符串初始化为数组,并指定日期的格式。
 12         var date = Date(fromString: "16 July 1972 6:12:00", format: .custom("dd MMM yyyy HH:mm:ss"))
 13         //在控制台输出初始化的日期对象
 14         print(date!.toString())
 15         
 16         //在对日期进行初始化时,第三方类库提供了五种日期格式。
 17         //用点格式对日期进行格式化。
 18         date = Date(fromString: "/Date(1260123281843)/", format: .dotNet)
 19         //在控制台输出初始化的日期对象
 20         print(date?.toString())
 21         
 22         //日期类型的明天方法
 23         print(Date.tomorrow().toString())
 24         //日期类型的昨天方法
 25         print(Date.yesterday().toString())
 26         
 27         let now = Date()
 28         //判断一个日期,在忽略时间的前提下,是否和另一个日期相等。
 29         print("now.isSameDay:\(now.compare(.isSameDay(as: date)))")
 30         //判断是否为今天
 31         print("date.isToday:\(date.compare(.isToday))")
 32         //判断是否为明天
 33         print("date.isTomorrow:\(date.compare(.isTomorrow))")
 34         //判断是否为昨天
 35         print("date.isYesterday:\(date.compare(.isYesterday))")
 36         //判断是否为同一周
 37         print("date.isSameWeek:\(date.compare(.isSameWeek(as: now)))")
 38         //判断是否为同一个月份
 39         print("date.isSameMonth:\(date.compare(.isSameMonth(as: now)))")
 40         //判断是否为同一个年份
 41         print("date.isSameYear:\(date.compare(.isSameYear(as: now)))")
 42         //判断是否在本周
 43         print("date.isYesterday:\(date.compare(.isWeek))")
 44         //判断是否在下周
 45         print("date.isNextWeek:\(date.compare(.isNextWeek))")
 46         //判断是否在上周
 47         print("date.isLastWeek:\(date.compare(.isLastWeek))")
 48         //判断是否在明年
 49         print("date.isNextYear:\(date.compare(.isNextYear))")
 50         //判断是否在去年
 51         print("date.isLastYear:\(date.compare(.isLastYear))")
 52         
 53         //判断该日期在日期之后的秒数
 54         print("date.secondsAfterDate:\(date.since(now, in: .second))")
 55         //判断该日期在日期之前的秒数
 56         print("date.secondsAfterDate:\(now.since(date, in: .second))")
 57         //判断该日期在日期之后的分钟数
 58         print("date.minutesAfterDate:\(date.since(now, in: .minute))")
 59         //判断该日期在日期之前的分钟数
 60         print("date.minutesAfterDate:\(now.since(date, in: .minute))")
 61         //判断该日期在日期之后的小时数
 62         print("date.hoursAfterDate:\(date.since(now, in: .hour))")
 63         //判断该日期在日期之前的小时数
 64         print("date.hoursAfterDate:\(now.since(date, in: .hour))")
 65         //判断该日期在日期之后的天数
 66         print("date.daysAfterDate:\(date.since(now, in: .day))")
 67         //判断该日期在日期之前的天数
 68         print("date.daysAfterDate:\(now.since(date, in: .day))")
 69         
 70         //判断该日期在日期距离最近的小时数
 71         print("date.nearestHour:\(date.dateFor(.nearestHour(hour: 1)))")
 72         //获得该日期的年份
 73         print("date.year:\(String(describing: date.component(.year)))")
 74         //获得该日期的月份
 75         print("date.year:\(String(describing: date.component(.month)))")
 76         //获得该日期的天数
 77         print("date.day:\(String(describing: date.component(.day)))")
 78         //获得该日期的小时数
 79         print("date.hour:\(String(describing: date.component(.hour)))")
 80         //获得该日期的分钟数
 81         print("date.minute:\(String(describing: date.component(.minute)))")
 82         //获得该日期的秒数
 83         print("date.second:\(String(describing: date.component(.second)))")
 84         //获得该日期的星期数
 85         print("date.weekday:\(String(describing: date.component(.weekday)))")
 86         //获得该日期在一个月中的第几个星期数
 87         print("date.nthWeekday:\(String(describing: date.component(.nthWeekday)))")
 88         
 89         //获得该日期在一个月中的天数
 90         print("date.firstDayOfWeek:\(date.firstDayOfWeek())")
 91         //获得星期中的第一天
 92         print("date.lastDayOfWeek:\(date.lastDayOfWeek())")
 93         //获得星期中的最后一天
 94         print("date.numberOfDaysInMonth:\(date.numberOfDaysInMonth())")
 95         
 96         //获得日期所在月份的总的天数
 97         print("custom:\(date.toString(format: .custom("dd MMM yyyy HH:mm:ss")))")
 98         //将日期按照自定义的格式转换为字符串
 99         print("custom:\(date.toString(format: .isoYearMonth))")
100     }
101 }