swift でカレンダーを作りたいのですが、
調べてみたところObjective-Cでのカレンダー作成がほとんどでSwiftで出来るのかわかりません。
2015年9月から,現在の2016年10月まで
2015年9月, 2015年10月,2015年11月,2015年12月,2016年1月,
次の月になると自動的に増えていく仕組みを作りたいです。 こんなことは可能でしょうか? ![イメージ説明](32677cdd547ea9e1f3b25d528e9daff5.png)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
年と月の情報と言いましても、最初の日は何曜日だとか、その月は何日あるのかなど、いろいろありまして、まあとりあえず、曜日を求める関数と月の日数を求める関数をさっとかいてみました。これで、その月はどこからどこまで日を入れていけばいいのかがわかるはずです。その月の最後は次の月から24時間引いて求めました。
Swift3.0
1//日曜(1)~土曜(7)まで 2func weekDayInt(year:Int,month:Int,date:Int) -> Int{ 3 let current = Calendar.current 4 let formatter = DateFormatter() 5 formatter.dateFormat = "YY/MM/dd" 6 let date1:Date = formatter.date(from: "\(year)/\(month)/\(date)")! 7 var component = (current as NSCalendar).components(NSCalendar.Unit.weekday, from: date1) 8 return component.weekday! 9} 10 11weekDayInt(year: 2016, month: 10, date: 10)//月曜日なので2 12 13//指定した月の日数を求める 14func numberOfDay(year:Int,month:Int) -> Int{ 15 let calender = Calendar.current 16 let formatter = DateFormatter() 17 formatter.dateFormat = "YY/MM/dd" 18 19 var nextMonthFirstDate:Date? 20 21 //来月の最初の日 22 if month != 12{ 23 nextMonthFirstDate = formatter.date(from: "\(year)/\((month+1))/\(1)")! 24 }else{ 25 //13月は次の年の1月に直す 26 nextMonthFirstDate = formatter.date(from: "\(year+1)/\((1))/\(1)")! 27 } 28 29 //今月の最後の日 30 let thisMonthLastDate:Date = Date(timeInterval: -60*60*24, since: nextMonthFirstDate!) 31 32 //それを具体化 33 let component1 = (calender as NSCalendar).components(NSCalendar.Unit.year, from: thisMonthLastDate).year 34 let component2 = (calender as NSCalendar).components(NSCalendar.Unit.month, from: thisMonthLastDate).month 35 let component3 = (calender as NSCalendar).components(NSCalendar.Unit.day, from: thisMonthLastDate).day 36 37 return component3! 38} 39 40numberOfDay(year: 2016, month: 10)//今月は31まであるから31 41
投稿2016/10/09 21:54
編集2016/10/09 21:55退会済みユーザー
総合スコア0
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。