iOS中的日期时间/字符串格式

4

我有一个NSString类型的日期和时间,格式为"YYYY-MM-DD HH:mm:SS",我想要将其转换为德国风格的日期时间格式:"DD.MM.YYY HH:mm:DD"

如何解决?


1
你需要使用NSDateFormatter,谷歌上有很多相关信息。 - GregularExpressions
3个回答

15

将一个日期字符串转换为另一种格式的示例:

NSString *currentDateString = @"04-08-2012 08:16:00";

NSLog(@"currentDateString: %@", currentDateString);

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

[dateFormater setDateFormat:@"MM-DD-yyyy HH:mm:ss"];
NSDate *currentDate = [dateFormater dateFromString:currentDateString];
NSLog(@"currentDate: %@", currentDate);

[dateFormater setDateFormat:@"yyyy-MM-DD HH:mm:ss"];
NSString *convertedDateString = [dateFormater stringFromDate:currentDate];
NSLog(@"convertedDateString: %@", convertedDateString);

[dateFormater setDateFormat:@"DD.MM.yyy HH:mm:DD"];
NSString *germanDateString = [dateFormater stringFromDate:currentDate];
NSLog(@"germanDateString: %@", germanDateString);

NSLog输出:
当前日期字符串:04-08-2012 08:16:00
当前日期:2012-04-01 12:16:00 +0000
转换后的日期字符串:2012-04-92 08:16:00
德语日期字符串:92.04.2012 08:16:92


为什么月份从04变成了01? - nithinreddy
哦,这个问题已经解决了还是即将解决?有什么想法吗?我们该怎么解决这个问题? - nithinreddy
不要在日期中使用带有前导年份的 dateFromString 方法,就像我这里做的那样。或者可以使用 NSDateComponents。至于何时会修复此问题,这是苹果和日期之间的关系,有点像油和水 :-) - zaph
@Zaphs的解决方案:最后一部分 -> 德语部分应该是这样的:[dateFormater setDateFormat:@"dd.MM.yyyy HH:mm:ss"]; - Kurt57
如果可能的话,请使用内置格式化程序:localizedStringFromDate:dateStyle:timeStyle:,格式化为当前语言环境。 - zaph

3
NSString* input = @"2012-04-08 13:05:49";

NSString* year  = [input substringWithRange: NSMakeRange( 0, 4)];
NSString* month = [input substringWithRange: NSMakeRange( 5, 2)];
NSString* day   = [input substringWithRange: NSMakeRange( 8, 2)];
NSString* time  = [input substringWithRange: NSMakeRange(11, 8)];

NSString* output = [NSString stringWithFormat:@"%@.%@.%@ %@",day,month,year,time];

1
在我看来,解析和格式化它要比仅仅移动字符要好得多。除此之外,这样做还可以验证该值是否合理。 - Jon Skeet

1
使用NSDateFormatter将其转换为NSDate对象,然后使用该格式化程序导出字符串。请遵循有关dateFromString和stringFromDate的文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接