質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1705閲覧

Swiftで期間を求めたい

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/02/19 18:31

前提・実現したいこと

Swiftでアプリ開発を行なっています。
データピッカーで日付を入力して配列に追加、一番新しい日付4つを計算して3つの期間出し、以下のような計算をして残りの日数を求めたいと思っているのですが、どのようにすればよいでしょうか?

a=今回
b=前回
c=前々回
d=前々々回
z=残りの日数

(d-c)+(c-b)+(b-a)/3= x
(a+x)= y
y- today = z

わかりづらい計算ですみません。
何卒よろしくお願い致します。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var days: UITextField! 6 @IBOutlet weak var Result: UILabel! 7 8 var strArr: [String] = [] 9 var str = "Result" 10 let Results = UserDefaults.standard 11 12 13 let formatter = DateFormatter() 14 let calendar = Calendar(identifier: .gregorian) 15 16 override func viewDidLoad() { 17 super.viewDidLoad() 18 19 let datePicker = UIDatePicker() 20 21 datePicker.datePickerMode = UIDatePickerMode.date 22 datePicker.addTarget(self, action: #selector(ViewController.datePickerValueChanged(sender:)), for: UIControlEvents.valueChanged) 23 24 days.inputView = datePicker 25 26 } 27 28 @objc func datePickerValueChanged(sender: UIDatePicker) { 29 formatter.dateFormat = "yyyy年MM月dd日" 30 strArr = [formatter.string(from: sender.date)] 31 days.text = strArr 32 } 33 34 @IBAction func button(_ sender: UIButton!) { 35 let d = formatter.date(from: strArr) 36 37 let period = calendar.dateComponents([.day], from: d).day 38 39 let period_result = ((period+period+period)/3).description 40 let result:String = period_result 41 Result.text = result 42 } 43 44 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 45 view.endEditing(true) 46 } 47 48 override func didReceiveMemoryWarning() { 49 super.didReceiveMemoryWarning() 50 } 51 52}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/02/20 01:45

あとで計算に使うなら日付はDate型で保存した方が良いと思いますが。
guest

回答1

0

ベストアンサー

  • timeIntervalSince(_:) で、2つのDate間の間隔(TimeInterval型)を取得できます。

  • Date型とTimeInterval型は+/-で加減算できます。

こんな感じ。(コードに意味はありません)

swift

1let t = dateA.timeIntervalSince(dateB) 2let dateD = dateC + t

投稿2018/02/20 02:48

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/20 07:05

お時間を割いてご回答いただき、ありがとうございます。 大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問