ویرگول
ورودثبت نام
gharary
ghararyیک توسعه دهنده iOS.
gharary
gharary
خواندن ۱ دقیقه·۹ سال پیش

تبدیل تاریخ میلادی به شمسی در Swift 4

سلام. توی یکی از پروژه هایی که کار میکردم، نیاز بود که تاریخی رو که از سرور دریافت میکنم رو به شمسی تبدیل کنم. و هرچه توی سایت های مختلف از جمله StackoverFlow و غیره سرچ کردم برای فارسی به حداقل نتیجه رسیدم به طوری که کارم رو راه ننداخت.

تصمیم گرفتم با آزمون و خطا به نتیجه برسم که در آخر هم رسیدم.

اولین قدم این هست که فیلد تاریخ رو از سرور بگیریم و اون رو تبدیل به String کنیم.

let subStrDate = dateUnix.prefix(16)
let subStr = String(subStrDate)

بعد از اون باید یه متغیر از نوع dateFotmat تعریف کنیم و در اون فرمت تاریخی که میخوایم به عنوان خروجی بگیریم رو مشخص کنیم.

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd HH:mm"
dateFormatter.calendar = Calendar(identifier: .gregorian)
let dateInGrogrian = dateFormatter.date(from: subStr)

و بعد از اون باید یه تقویم تعریف کنیم و تاریخی که بدست اوردیم رو داخل اون قرار بدیم و بعد از اون میتونیم سال، ماه، و روز رو ازش بگیریم.

let calender = NSCalendar(calendarIdentifier: NSCalendar.Identifier.persian)
let components = calender?.components(NSCalendar.Unit(rawValue: UInt.max), from: dateInGrogrian!)
let year = components!.year
let month = components!.month
let day = components!.day
let hour = components?.hour
let minute = components?.minute

و در نهایت میشه ازش استفاده کرد یا اون رو به کاربر نشون داد.

dateFormatter.calendar = Calendar(identifier: .persian)
dateFormatter.dateFormat = "YYYY-MM-dd HH:mm"
let datePersian = "\(String(describing: year!))/\(String(describing: month!))/\(String(describing: day!)) \(String(describing: hour!)):\(String(describing: minute!))"

اگر این مشکل رو شما هم داشتید، امیدوارم بشه با این روش حلش کرد.

موفق باشید.


تبدیل تاریخswiftبرنامه نویسی ios
۸
۶
gharary
gharary
یک توسعه دهنده iOS.
شاید از این پست‌ها خوشتان بیاید