使用NSDateFormatter转换日期格式时出现问题

时间:2014-07-15 11:22:46

标签: ios objective-c nsdate nsdateformatter

所有

在我的项目中,我想将日期从MM-dd-yyyy转换为M / d / YY(12/31/15),但我的格式错误,下面是我正在使用的代码。

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

我将收到2014年3月31日的字符串

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

    NSDate *date = [df_utc dateFromString:string];

当我转换它的时候,这个日期就是这个" 2014-12-30 18:30:00 + 0000"

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"M/d/YY"];

然后,当我尝试转换为以上格式时,我将完全错误的一年" 12/31/15"

    NSString *formattedDate = [dateFormatter stringFromDate:date];
    return formattedDate;

}

任何人都可以告诉我错在哪里

3 个答案:

答案 0 :(得分:1)

不要使用大写“Y” - 它会为年初/年末(look it up)附近的日期产生非常不可预测的值。如果您愿意,可以使用单个“M”来抑制月中的前导零。

总结:

  • d - 月中的某一天
  • M - 月
  • y - year
  • h - 小时 - 12小时制
  • H - 小时 - 24小时制
  • m - 分钟
  • s - second
  • S - 秒的分数
  • a - AM / PM

重复次数对应于字段宽度(但不总是1:1)。例如,“MMMM”将为您提供全长拼写的月份名称,而“MMM”给出3个字母的缩写,“MM”给出2位数字月份。有关详细信息,请参阅规范(上面突出显示)。

答案 1 :(得分:0)

  

我希望这种格式的日期为12/31/15,然后是哪种格式化程序

试试这个[dateFormatter setDateFormat:@"MM/dd/yy"];

有关Date Formatting patterns

的详细信息

答案 2 :(得分:-1)

以下面的方式做..

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"];
// or 

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