下記のように処理を書いてみましたが、5年以上前の記事を参考に書いてみたのですがうまくいかず。
取得するCalendarから必要なコンポーネントを取得しているところの処理でエラーが'Unit' is not a member type of 'Calendar'
のエラーも発生してしまいます。
何か参考になるような書き方があれば教えていただけないでしょうか。
Swift
1import Foundation 2 3extension Date { 4 func toFuzzy() -> String { 5 6 // 現在時刻を取得する 7 let now = Date() 8 9 // カレンダーを作成する 10 let cal = Calendar.current 11 12 13 let calUnit: Calendar.Unit = .CalendarUnitSecond | .CalendarUnitMinute | .CalendarUnitHour | .CalendarUnitDay | .CalendarUnitYear 14 let components = cal.components(calUnit, fromDate: self, toDate: now, options: nil) 15 16 let diffSec = components.second + components.minute*60 + components.hour*3600 + components.day*86400 + components.year*31536000 17 var result = String() 18 19 if diffSec < 60 { 20 result = "(diffSec)秒前" 21 } else if diffSec < 3600 { 22 result = "(diffSec/60)分前" 23 } else if diffSec < 86400 { 24 result = "(diffSec/3600)時間前" 25 } else if diffSec < 2764800 { 26 result = "(diffSec/86400)日前" 27 } else { 28 let dateFormatter = DateFormatter() 29 30 if components.year > 0 { 31 dateFormatter.dateFormat = "yyyy年M月d日" 32 result = dateFormatter.string(from: self) 33 } else { 34 dateFormatter.dateFormat = "M月d日" 35 result = dateFormatter.string(from: self) 36 } 37 } 38 39 return result 40 } 41 42 static func parse(dateString:String) -> Date { 43 let formatter = DateFormatter() 44 formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ" 45 let d = formatter.date(from: dateString) 46 return Date(timeInterval: 0, since: d!) 47 } 48} 49
回答1件
あなたの回答
tips
プレビュー