web-dev-qa-db-fra.com

Comment formater un NSDate en jj/mm/aaaa

J'essaie d'obtenir un NSDate dans le format: 20/05/2014 22:30  

voici le code que j'ai actuellement. [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"]; Cela fonctionne mais le format ne ressemble pas à - 20/05/2014 22:30 il affiche la date au format suivant: 12-03-2013 12:00:00 + 00:00:00 

et puis quand j'utilise:

[dateFormat setDateFormat:@"MM/dd/yyyy"]; Je reçois une valeur null renvoyée à la place d'une date formatée.

// timestamp conversion
    NSString *str = [timeStamp objectAtIndex:indexPath.row];
    // convert to date
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
  //  [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"];

 [dateFormat setDateFormat:@"MM/dd/yyyy"];

    NSDate *dte = [dateFormat dateFromString:str];
    cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ];

la sortie de la chaîne d'origine str avant le formatage est str 2013-08-23T15:21:19+02:00

merci pour toute aide

7
user2588945

vous devez faire comme ceci mais s'il vous plaît d'abord vérifier le format de date de votre str

NSString *str = [timeStamp objectAtIndex:indexPath.row];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"];


NSDate *dte = [dateFormat dateFromString:str];

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",[dateFormat stringFromDate:dte]];

la première fois, le format de date est le même que dans votre str.

37
Pratik

Tout d’abord, définissez la variable NSDateFormatter sur le format de réception des données afin de les conserver dans un objet NSDate, puis utilisez à nouveau le format souhaité pour le modifier et le montrer. Pour plus, vous pouvez voir Pratik répondre.

J'espère que cela t'aides.

3
iEinstein

définissez votre format de date dans [dateFormat setDateFormat: @ "jj/MM/aaaa HH: mm"]; de sorte que votre code écrit de manière

// timestamp conversion
NSString *str = [timeStamp objectAtIndex:indexPath.row];
// convert to date
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
//  [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"];

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];

NSDate *dte = [dateFormat dateFromString:str];
cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ];

J'espère que c'est utile.

3
PeterParker

Utilisez simplement le code ci-dessous et vous obtiendrez le résultat:

// conversion d'horodatage

NSString *str = [timeStamp objectAtIndex:indexPath.row];

// convertir en date

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd T HH:mm:ss ZZZZ"];

NSDate *dte = [dateFormat dateFromString:str];

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];

cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",[dateFormat stringFromDate:dte]];
2
Rachit

Je pense que l'application de l'environnement local` et de son apparence par programme est une mauvaise idée, à moins que cela ne soit spécifié comme une exigence.

Une alternative serait d'utiliser setDateStyle sur NSDateFormatter, dans l'un des formats spécifiés sous System Preferences -> Language & Text -> Region -> Dates. Il existe un format court, moyen et long parmi lesquels choisir entre l'heure et la date. Disponible les styles sont répertoriés dans la documentation sous NSDateFormatterStyle

Maintenant, pour répondre à votre question: Si vous ajoutiez le format short time au format medium date , vous obtiendriez le résultat souhaité tout en conservant la possibilité de localisation et de personnalisation. .

2

Définissez Votre formateur de date sur

 [dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];

// conversion d'horodatage

NSString *str = [timeStamp objectAtIndex:indexPath.row];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];

NSDate *dte = [dateFormat dateFromString:str];
cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ];
1
Toseef Khilji

** NSString * strNotificationTimeAndDate = "Votre date";

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss.z"];

ou

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss+z"];

ou

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ssz"];

ou

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
NSDate *commentdate = [dateFormat 
dateFromString:strNotificationTimeAndDate];**
0

Consultez DateFormatters pour utiliser les formats requis: Apple Doc

0
Gobi M