LoginSignup
44
36

More than 5 years have passed since last update.

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

Posted at

加算

開始日付+1日
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
開始時刻+1時間
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

減算

開始日付-1日
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
開始時刻-1時間
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年減算 :-1
    ・3ヶ月加算:3
    ・10日減算:-10
    ・5時間加算:5
    ・40分減算:-40
    ・30秒加算:30

背景

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

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

環境

  • フレームワーク

    • Foundation
  • SDKs

    • Xcode 6.0.1+
    • iOS 8.0+
    • macOS 10.9+
    • tvOS 9.0+
    • watchOS 2.0+

参考ドキュメント

44
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
36