2016-02-15 8 views
5

स्ट्रिंग मान का विश्लेषण कैसे करें 12:02:21.3213 से NSTimeInterval पर स्ट्रिंग का विश्लेषण कैसे करें? NSDateComponentsFormatter, आईओएस 8 के बाद से उपलब्ध है, केवल स्वरूपण का समर्थन करता है, पार्सिंग नहीं।एनएसटीइम इंटरवल

+1

संभावित डुप्लिकेट http://stackoverflow.com/questions/24777496/how -can-i-convert-string-date-to-nsdate) – rghome

+0

@rghome: नहीं, कम से कम * उस * प्रश्न का डुप्लिकेट नहीं। - "12: 02: 21.3213" यहां एक * अवधि * है (जिसे एनएसटीइम इंटरवल के रूप में दर्शाया जा सकता है), समय के बिंदु के रूप में नहीं (जो एक एनएसडीएटी होगा)। –

+0

शायद एक सटीक डुप्लिकेट नहीं है। आप 1 जनवरी 1 9 70 के लिए समय का विश्लेषण कर सकते हैं और फिर उस तारीख के अंतराल प्राप्त कर सकते हैं। मुझे लगता है कि सिर्फ अपने आप में एक अलग जवाब है। – rghome

उत्तर

7

का तरीका यहां बताया स्विफ्ट में कर सकते हैं है:

func parseDuration(timeString:String) -> NSTimeInterval { 
    guard !timeString.isEmpty else { 
     return 0 
    } 

    var interval:Double = 0 

    let parts = timeString.componentsSeparatedByString(":") 
    for (index, part) in parts.reverse().enumerate() { 
     interval += (Double(part) ?? 0) * pow(Double(60), Double(index)) 
    } 

    return interval 
} 

यह 2:12:12 तरह मूल्यों के लिए काम करता है, 02:01:23.123213

6

बार्तोज़ Hernas द्वारा प्रदान समाधान मेरे लिए काम किया, धन्यवाद!

सुविधा के लिए, यहाँ यह स्विफ्ट 3के लिए है:

func parseDuration(_ timeString:String) -> TimeInterval { 
    guard !timeString.isEmpty else { 
     return 0 
    } 

    var interval:Double = 0 

    let parts = timeString.components(separatedBy: ":") 
    for (index, part) in parts.reversed().enumerated() { 
     interval += (Double(part) ?? 0) * pow(Double(60), Double(index)) 
    } 

    return interval 
} 
की [? मैं कैसे NSDate करने के लिए स्ट्रिंग तिथि परिवर्तित कर सकते हैं] (
संबंधित मुद्दे