将字符串转换为日期并获取日期字符串

Converting string to date and get date string

在我的应用程序中,我有一个字符串 'date'="2015-03-16".

我需要在标签中显示为 Lunes 16 de marzo 2015(2015 年 3 月 16 日,星期一)。我正在使用以下代码来执行此操作:

   NSString *dateStr = date;

    // Convertimos el string date a objeto de fecha
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-d"];
    NSDate *fecha = [dateFormat dateFromString:dateStr];
    NSLog(@"DATE CONVERTIDO A FECHA =%@", fecha);

    NSDateFormatter *df = [[NSDateFormatter alloc] init];

    [df setDateFormat:@"EEEE, dd MMM yyyy"];


    fecha = [df dateFromString: date];

    NSLog(@"date: %@", fecha);

但最后我得到了变量 'fecha' 的 (null) 日志 --> date: (null)

我做错了什么?

您正在使用格式 @"yyyy-MM-d",使用 @"yyyy-MM-dd"

NSString *dateStr = date;

// Convertimos el string date a objeto de fecha
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];//You were using only d
dateFormat.dateStyle = NSDateFormatterFullStyle
NSDate *fecha = [dateFormat dateFromString:dateStr];

NSLog(@"DATE CONVERTIDO A FECHA =%@", fecha);

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEEE, dd MMM yyyy"];
NSString *newDatestr = [df stringFromDate:fecha];
NSLog(@"date: %@", newDatestr);

您的 df 格式化程序代码正在执行另一个 dateFromString 我认为您打算为第二个格式化程序走另一个方向(例如 stringFromDate 之前的 fecha确定)。

在你的 df 格式化程序用这个替换你的代码后,你的方向相反:

NSString *dateStr=@"2015-03-16";
// Convertimos el string date a objeto de fecha
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDate *fecha = [dateFormat dateFromString:dateStr];
NSLog(@"DATE CONVERTIDO A FECHA =%@", fecha);

NSDateFormatter *df = [[NSDateFormatter alloc] init];

[df setDateFormat:@"EEEE, dd MMM yyyy"];


NSString *newDatestr = [df stringFromDate:fecha];

NSLog(@"date: %@", newDatestr);

希望对您有所帮助................:)