230 votes

Convertir des NSString NSDate (et vice-versa)

Comment se convertir un NSString comme « 02/01/10 » (c'est-à-dire le 1er février 2010) en un NSDate ? Et comment pourrais je retourner la NSDate dans une chaîne ?

454voto

Pavan Points 6577
<h2>Objective-C<p><strong>NSString à NSDate</strong></p><pre><code></code></pre><p><strong>NSDate àen NSString :</strong></p><pre><code></code></pre><p>`</p><hr><h2><strong>SWIFT</strong></h2><p>Mise à jour : 27 août 2014</p><p><strong>Chaîne à NSDate</strong></p><pre><code></code></pre><p><strong>NSDate à chaîne</strong></p><pre><code></code></pre></h2>

57voto

Geri Points 3572

Faites un NSString extension .

// Simple as this.   
date = dateString.dateValue;

Grâce à NSDataDetector, il reconnaît tout un tas de format.

'2014-01-16' dateValue is <2014-01-16 11:00:00 +0000>
'2014.01.16' dateValue is <2014-01-16 11:00:00 +0000>
'2014/01/16' dateValue is <2014-01-16 11:00:00 +0000>
'2014 Jan 16' dateValue is <2014-01-16 11:00:00 +0000>
'2014 Jan 16th' dateValue is <2014-01-16 11:00:00 +0000>
'20140116' dateValue is <2014-01-16 11:00:00 +0000>
'01-16-2014' dateValue is <2014-01-16 11:00:00 +0000>
'01.16.2014' dateValue is <2014-01-16 11:00:00 +0000>
'01/16/2014' dateValue is <2014-01-16 11:00:00 +0000>
'16 January 2014' dateValue is <2014-01-16 11:00:00 +0000>
'01-16-2014 17:05:05' dateValue is <2014-01-16 16:05:05 +0000>
'01-16-2014 T 17:05:05 UTC' dateValue is <2014-01-16 17:05:05 +0000>
'17:05, 1 January 2014 (UTC)' dateValue is <2014-01-01 16:05:00 +0000>

Une partie de l' eppz!kit, prenez la catégorie NSString+EPPZKit.h à partir de GitHub.


RÉPONSE ORIGINALE à cette question: Si vous ne savez pas (ou pas de soins) sur le format de la date contenue dans la chaîne, utilisez NSDataDetector pour l'analyse de la date.

//Role players.
NSString *dateString = @"Wed, 03 Jul 2013 02:16:02 -0700";
__block NSDate *detectedDate;

//Detect.
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:nil];
[detector enumerateMatchesInString:dateString
                           options:kNilOptions
                             range:NSMakeRange(0, [dateString length])
                        usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{ detectedDate = result.date; }];

19voto

Pourquoi ne pas ajouter une catégorie à NSString ?

6voto

RubberDuck Points 7337

à l’aide de « 10 » pour représentant une année n’est pas bon, car il peut être 1910, 1810, etc.. Vous devez probablement utiliser 4 chiffres pour cela.

Si vous pouvez modifier la date de quelque chose comme

Vous pouvez utiliser :

4voto

Mohit Popat Points 907
NSString *dateStr = @"Tue, 25 May 2010 12:53:58 +0000";

// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE, d LLLL yyyy HH:mm:ss Z"];
NSDate *date = [dateFormat dateFromString:dateStr]; 
[dateFormat release];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X