【swift】日付・時刻の単純な加算または減算の方法

# 加算

##### 開始日付＋１日

```day.swift
//Foundation
import Foundation

//日付を取得
let day = Date()

//【処理】
//   日の加算
//【引数】
//   byAdding: .day（日単位で加算したいのでday指定【列挙型】）
//   value: 1（1日加算）
//   to: day（開始日）
//【戻り値】
//   算出後の日付
let modifiedDate = Calendar.current.date(byAdding: .day, value: 1, to: day)!
    
print("day          : \(day)")
print("modifiedDate : \(modifiedDate)")
```

```実行結果.
day          : 2019-04-22 02:45:59 +0000
modifiedDate : 2019-04-23 02:45:59 +0000
```

##### 開始時刻＋１時間

```hour.swift
//Foundation
import Foundation

//日付を取得
let day = Date()

//【処理】
//   時刻の加算
//【引数】
//   byAdding: .hour（時単位で加算したいのでhour指定【列挙型】）
//   value: 1（1時間加算）
//   to: day（開始日）
//【戻り値】
//   算出後の日付
let modifiedDate = Calendar.current.date(byAdding: .hour, value: 1, to: day)!
    
print("day          : \(day)")
print("modifiedDate : \(modifiedDate)")
```

```実行結果.
day          : 2019-04-22 04:31:38 +0000
modifiedDate : 2019-04-22 05:31:38 +0000
```

#減算

##### 開始日付－１日

```day.swift
//Foundation
import Foundation

//日付を取得
let day = Date()

//【処理】
//   日の減算
//【引数】
//   byAdding: .day（日単位で加算したいのでday指定【列挙型】）
//   value: -1（1日減算）★マイナスを指定★
//   to: day（開始日）
//【戻り値】
//   算出後の日付
let modifiedDate = Calendar.current.date(byAdding: .day, value: -1, to: day)!
    
print("day          : \(day)")
print("modifiedDate : \(modifiedDate)")
```

```実行結果.
day          : 2019-04-22 04:32:01 +0000
modifiedDate : 2019-04-21 04:32:01 +0000
```

##### 開始時刻－１時間

```hour.swift
//Foundation
import Foundation

//日付を取得
let day = Date()

//【処理】
//   時刻の減算
//【引数】
//   byAdding: .hour（時単位で加算したいのでhour指定【列挙型】）
//   value: -1（1時間減算）★マイナスを指定★
//   to: day（開始日）
//【戻り値】
//   算出後の日付
let modifiedDate = Calendar.current.date(byAdding: .hour, value: -1, to: day)!
    
print("day          : \(day)")
print("modifiedDate : \(modifiedDate)")
```

```実行結果.
day          : 2019-04-22 04:32:47 +0000
modifiedDate : 2019-04-22 03:32:47 +0000
```

#その他（年・分・秒）

#####年の加算
```year.swift
//省略
let day = Date()
let modifiedDate = Calendar.current.date(byAdding: .year, value: 1, to: day)!
//省略
```

#####分の減算
```minute.swift
//省略
let day = Date()
let modifiedDate = Calendar.current.date(byAdding: .minute, value: -10, to: day)!
//省略
```

#####秒の加算
```second.swift
//省略
let day = Date()
let modifiedDate = Calendar.current.date(byAdding: .second, value: 20, to: day)!
//省略
```


#####引数「byAdding」「value」について

 - byAdding
引数「byAdding」にenumで、
加算または減算する対象（年月日時分秒）を指定する。

    年：.year
    月：.month
    日：.day
    時：.hour
    分：.minute
    秒：.second

 - value
引数「value」に値（減算の場合はマイナス）を指定する。

    値指定の例
    ・１年減算　：-1
    ・３ヶ月加算：3
    ・１０日減算：-10
    ・５時間加算：5
    ・４０分減算：-40
    ・３０秒加算：30

#背景
日付の減算方法に関するサイトが見つからなかったので
本記事を作成しました。

が、作成後にとても良い記事を見つけました。
本記事は基本的な処理ですが、下記の記事は一度に日時分単位で細かく
過去日付を取得することができるのでとても参考になりました。

 - Swift3での日時に関する処理
  - https://qiita.com/isom0242/items/e83ab77a3f56f66edd2f



#環境

 - フレームワーク
  - Foundation


 - SDKs
   - Xcode 6.0.1+
   - iOS 8.0+
   - macOS 10.9+
   - tvOS 9.0+
   - watchOS 2.0+


#参考ドキュメント

 - Calendar.current.date（Dateの計算メソッド）
  - https://developer.apple.com/documentation/foundation/calendar/2293453-date

 - Calendar.Component（年月日時分秒のenum）
  - https://developer.apple.com/documentation/foundation/calendar/component