Timestamp Formatındaki Tarihi Okunabilir Hale Getirmek

27 Ağustos 2018 0 0

Selam olsun sizlere. Bu yazıda Swift ile projenizi geliştirirken ihtiyaç duyabileceğiniz kullanışlı bir fonksiyonu sizlerle paylaşacağım. Elinizdeki Timestamp verisini anlamlı bir date verisi haline getirebilmek için kullanabilirsiniz.

Genellikle servisten aldığımız Date verisi pek hoşumuza gitmese de Timestamp formatında gelebiliyor.

Timestamp değerimiz 1535383240000 olsun. Fonksiyonumuz aşağıdaki gibi bir sonuç döndürecek.

let dict = {
    ["date"] = "27.08.2018", //okunabilir formatta tarih
    ["hour"] = "18:20", //okunabilir formatta saat
    ["day"] = "Pazartesi", //günün ismi
    ["inThisWeek"] = true //tarihin son 1 hafta içerisinde olup olmadığı
}

Timestamp Formatını Okunabilir Hale Getirmek ve Yorumlamak

static func getDateElements(_ dateObject: AnyObject) -> NSMutableDictionary {
    if dateObject is NSNull || dateObject == nil {
        return NSMutableDictionary()
    }

    // 1000'e bolme sebebimiz tarih verisinin milliseconds (long) cinsinden olmasi
    let date = NSDate(timeIntervalSince1970: TimeInterval(dateObject.intValue/1000)) 
    let formatter = DateFormatter()
    formatter.dateFormat = "HH:mm"
    let hourStr = formatter.string(from: date as Date)
    formatter.dateFormat = "dd.MM.yyyy"
    let dateStr = formatter.string(from: date as Date)
    
    let calendar = NSCalendar.current
    let date1 = calendar.startOfDay(for: date as Date)
    let date2 = calendar.startOfDay(for: Date())
    
    let components = calendar.dateComponents([.day], from: date1, to: date2)
    let inThisWeek: Bool = components.day! < 7

    var number = Calendar.current.dateComponents([.weekday], from: date as Date).weekday
    number! = number! < 2 ? number! + 5 : number! - 2

    let days = ["Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"]
    let dayName = (number >= 0 && number <= 6) ? days[number] : ""
    
    let dict = NSMutableDictionary()
    dict["date"] = dateStr
    dict["hour"] = hourStr
    dict["day"] = dayName
    dict["inThisWeek"] = inThisWeek
    return dict
}

Yukarıdaki fonksiyonda açıklamam gereken yerler var.
Fonksiyonda Timestamp’in milliseconds cinsinden olduğunu varsaydım. Eğer Timestamp’iniz milliseconds değilse 7. satırdaki 1000’e bölme işlemini yapmayın.

22. satırda number’a 5 ekliyoruz yada 2 çıkartıyoruz. Bunun sebebi tarihin Avrupa formatlı olup bizim kullandığımız formata uygun olmamasıdır.
Avrupa formatında haftanın ilk günü pazardır ve günlerin numaraları [1,7] aralığındadır. Benim kullanmak istediğim format ise haftanın ilk günü pazartesi ve günlerin numaraları [0,6] aralığında olacak şekildedir.

İlgili tarihin denk geldiği günün numara dönüşümünü aşağıda gösterdim. Siz farklı formatlara çevirmek isterseniz bu kısımda ilgili hesaplamayı yapıp, number’ı ona göre düzeltmelisiniz.

Bu fonksiyon timestamp formatını okunabilir hale getirmek temelinde olup birkaç tane farklı çıktı aldığım bir örnek oldu. İhtiyaç duyduğunuz farklı bilgileri de fonksiyon üzerinde oynama yaparak elde etmeniz mümkün.

Magic Box‘ınızı geliştirmek sizin ellerinizde.
Görüşmek üzere.

EU TR
1 6 Pazar
2 0 Pazartesi
3 1 Salı
4 2 Çarşamba
5 3 Perşembe
6 4 Cuma
7 5 Cumartesi

Tags: Date verisini okunabilir hale getirmek, iOS Development, Swift, tarih formatını değiştirmek, timestamp verisini okunabilir hale getirmek Categories: Swift
share TWEET PIN IT SHARE share share
Mustafa Türk

Selam olsun diyerek başlıyorum yazmaya. Yazılarımdan birkaçını okumuşsanız kafanızda bir Mustafa resmi canlanmaya başlamıştır. Silüet demek daha doğru olabilir aslında. Kütahya’nın dehşetli soğuklarının olduğu bir kış vaktinde gece yarısı doğmuşum. Geceye olan sevdamın kaynağı bu noktaya dayanıyor olabilir. Ve bu yazının devamı okunmak istenmiş olabilir. Devamı...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir