2017-10-18 51 views
0

我在for循環創建對象,需要特定的創建日期和時間,這樣我可以告訴他們創建的順序。我還需要這dateTime保存爲String,仍然是能夠從中獲得創建順序。
這可能嗎?特定對象創建日期和時間

我明白如何獲得創建對象的日期和時間,但轉換爲字符串時不夠具體。

目前我只是有日期的小延伸:

extension Date { 
    func currentDateTimeAsString() -> String { 
     let date = Date() 
     let formatter = DateFormatter() 
     formatter.dateFormat = "HH:mm dd/MM/yyyy" 

     return formatter.string(from: date) 
    } 
} 

但這顯然是不夠準確的,我不認爲加入毫秒的時間是什麼幫助要麼?

我知道有一些方法可以通過向對象中添加計數等來讓我可以使用它來獲取訂單,但是我知道如果在將它轉換爲字符串之前使用Date,它會正確地命令它,所以在那裏是一些信息隱藏在那裏,我需要轉換爲字符串以及。

+0

添加一些代碼來顯示你現在在做什麼。 –

+0

已添加我目前的代碼,但我不知道它的用處:) – Wazza

+0

如果你想有獨特的時間來創建對象,你可能需要縮短到納秒。即使那樣,你也不能保證它們會是獨一無二的。也許增加一個櫃檯以及時間。僅基於計數器進行排序。根據您現在收集的時間顯示。 –

回答

1

你可以寫你的對象爲:

struct SomeData: CustomStringConvertible { 
    let dateTimeStr: String 
    private static var dateFormatter: DateFormatter { 
     let formatter = DateFormatter() 
     formatter.dateFormat = "dd-MMM-yyyy HH:mm:ss.SSS" 
     return formatter 
    } 
    init() { 
     let creationDate = Date() 
     dateTimeStr = SomeData.dateFormatter.string(from: creationDate) 
    } 
    var creationDate: Date { 
     return SomeData.dateFormatter.date(from: dateTimeStr)! 
    } 
    var description: String {//just to print 
     return dateTimeStr 
    } 
} 

然後在創建for循環:

var objArr = [SomeData]() 
for _ in 0...5 { 
    objArr.append(SomeData()) 
} 
print("\(objArr)") 

輸出:[10月18日2017年12:50:09.684,18 2017年10月18日12:50:09.690,2017年10月18日12:50:09.692,2017年10月18日12:50:09.696,2017年10月18日12:50:09.699,2017年10月18日12: 50:09.704]

正如您所見,它們已根據創建時間進行了排序。

但還是要重新排序,這樣做喜歡:

let sortedObjArr = objArr.sorted(by: { $0.creationDate < $1.creationDate }) 
print("\(sortedObjArr)") 

輸出:[10月18日2017年12:50:09.684,10月18日2017年12:50:09.690 ,2017年10月18日12:50:09.692,2017年10月18日12:50:09.696,2017年10月18日12:50:09.699,2017年10月18日12:50:09.704]

如果你想顛倒順序,做到這一點:

let sortedObjArr = objArr.sorted(by: { $0.creationDate > $1.creationDate }) 
print("\(sortedObjArr)") 

產量:[2017年10月18日12:50:09.704,2017年10月18日12:50:09.699,2017年10月18日12:50:09.696,2017年10月18日12:50:09.692 ,10月18日2017年12:50:09.690,10月18日2017年12:50:09.684]

+0

這是您可以從日期中獲得的最詳細信息嗎? – Wazza

+0

什麼細節你想過時? – D4ttatraya

+0

在更具體的時間還是毫秒最小? – Wazza

相關問題