web-dev-qa-db-fra.com

Formatage de NSDate en styles particuliers pour l'année, le mois, le jour et l'heure, les minutes et les secondes

J'ai essentiellement besoin d'obtenir la date et l'heure actuelles séparément, au format:

 2009-04-26 
 11:06:54 

Le code ci-dessous, d’une autre question sur le même sujet, génère

 maintenant: | 2009-06-01 23:18:23 +0100 | 
 dateChaine: | Jun 01, 2009 23: 18 | 
 analysé: | 2009-06-01 23:18:00 +0100 | 

C'est presque ce que je recherche, mais je veux séparer le jour et l'heure.

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];

NSDate *now = [[NSDate alloc] init];

NSString *dateString = [format stringFromDate:now];

NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, yyyy"];

NSDate *parsed = [inFormat dateFromString:dateString];

NSLog(@"\n"
"now:        |%@| \n"
"dateString: |%@| \n"
"parsed:     |%@|", now, dateString, parsed);
131
bcsantos

les chaînes au format iPhone sont au format Format Unicode . Derrière le lien se trouve un tableau expliquant la signification de toutes les lettres ci-dessus afin que vous puissiez construire les vôtres.

Et bien sûr, n'oubliez pas de publier vos formateurs de date lorsque vous avez terminé. Le code ci-dessus fuit format, now et inFormat.

72
Rob Napier

c'est ce que j'ai utilisé:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];

NSDate *now = [[NSDate alloc] init];

NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];

NSLog(@"\n"
      "theDate: |%@| \n"
      "theTime: |%@| \n"
      , theDate, theTime);

[dateFormat release];
[timeFormat release];
[now release];
194
bcsantos

vous pouvez utiliser cette méthode il suffit de passer votre date à elle

-(NSString *)getDateFromString:(NSString *)string
{

    NSString * dateString = [NSString stringWithFormat: @"%@",string];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"your current date format"];
    NSDate* myDate = [dateFormatter dateFromString:dateString];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"your desired format"];
    NSString *stringFromDate = [formatter stringFromDate:myDate];

    NSLog(@"%@", stringFromDate);
    return stringFromDate;
}
12
guru
    NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
    [dateformat setDateFormat:@"Your Date Format"];

définir le format de retour est ....

yyyy-MM-dd retourne 2015-12-17 date

yyyy-MMM-dd retourne 2015-Dec-17 date

yy-MM-dd retourne 15-12-17 date

dd-MM-yy retourne 17-12-15 date

dd-MM-yyyy retourne 17-12-2015 date

yyyy-MMM-dd HH:mm:ss retourne 2015-Dec-17 08:07:13 date et heure

yyyy-MMM-dd HH:mm retourne 2015-Dec-17 08:07 date et heure

Pour plus de détails Format de données et d'heure pour Cliquez maintenant.

Je vous remercie..... 

11
PT Vyas

rien de nouveau mais toujours envie de partager ma méthode:

+(NSString*) getDateStringFromSrcFormat:(NSString *) srcFormat destFormat:(NSString *)
destFormat scrString:(NSString *) srcString
{
    NSString *dateString = srcString;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //[dateFormatter setDateFormat:@"MM-dd-yyyy"];
    [dateFormatter setDateFormat:srcFormat];
    NSDate *date = [dateFormatter dateFromString:dateString];

    // Convert date object into desired format
    //[dateFormatter setDateFormat:@"yyyy-MM-dd"];
    [dateFormatter setDateFormat:destFormat];
    NSString *newDateString = [dateFormatter stringFromDate:date];
    return newDateString;
}
4
gndp

Pour Swift

var dateString:String = "2014-05-20";
var dateFmt = NSDateFormatter()
// the format you want
dateFmt.dateFormat = "yyyy-MM-dd"
var date1:NSDate = dateFmt.dateFromString(dateString)!;
3
user3693546

Swift 3

extension Date {

    func toString(template: String) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: NSLocale.current)
        return formatter.string(from: self)
    }

}

Usage

let now = Date()
let nowStr0 = now.toString(template: "EEEEdMMM") // Tuesday, May 9
let nowStr1 = now.toString(template: "yyyy-MM-dd") // 2017-05-09
let nowStr2 = now.toString(template: "HH:mm:ss") // 17:47:09

Jouez avec un modèle pour répondre à vos besoins. Exemples et doc ici pour vous aider à construire le modèle dont vous avez besoin.

Remarque

Vous voudrez peut-être mettre en cache votre DateFormatter si vous envisagez de l'utiliser dans TableView par exemple. Pour donner une idée, boucler plus de 1000 dates m'a pris 0,5 seconde en utilisant la fonction toString(template: String) ci-dessus, comparée à 0,05 seconde en utilisant myFormatter.string(from: Date).

0
frouo