2017-10-18 38 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

相关问题