将NSDate格式化为年,月,日,小时,分钟,秒等特定样式

我基本上需要分别得到当前的date和时间,格式为:

 2009-04-26 
 11时06分54秒

下面的代码来自同一主题的另一个问题

现在:| 2009-06-01 23:18:23 +0100 | 
 dateString:| 2009年6月1日23:18 | 
parsing:| 2009-06-01 23:18:00 +0100 |

这几乎是我正在寻找的东西,但是我想把时间和date分开。

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); 

iPhone格式的string是Unicode格式 。 链接后面是一个表格,解释了上面所有字母的意思,这样你就可以build立自己的。

当然,不要忘记在完成date格式化时释放它们。 上面的代码泄漏formatnowinFormat

这是我用的:

 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]; 

你可以用这个方法把你的date传给它

 -(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; } 
  NSDateFormatter *dateformat = [[NSDateFormatter alloc] init]; [dateformat setDateFormat:@"Your Date Format"]; 

设置格式返回是….

yyyy-MM-dd返回2015-12-17date

yyyy-MMM-dd返回2015-Dec-17日的date

yy-MM-dd返回15-12-17date

dd-MM-yy返回17-12-15date

dd-MM-yyyy返回17-12-2015date

yyyy-MMM-dd HH:mm:ss返回2015-Dec-17 08:07:13 yyyy-MMM-dd HH:mm:ss 2015-Dec-17 08:07:13date和时间

yyyy-MMM-dd HH:mm返回2015-Dec-17 08:07date和时间

点击“立即获取更多细节数据和时间格式”。

谢谢…..

没有新的但仍想分享我的方法:

 +(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; } 

为了迅速

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

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) } } 

用法

 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 

玩模板来匹配您的需求。 这里的示例和文档可以帮助您构build所需的模板。

注意

如果你打算在TableView使用它,你可能想caching你的DateFormatter 。 为了给出一个想法,使用上面的toString(template: String)函数循环1000个date花了我0.5秒 ,相比之下,使用myFormatter.string(from: Date) 0.05秒

 NSDate *date = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"yyyy-MM-dd"] NSString *dateString = [df stringFromDate:date]; [df setDateFormat:@"hh:mm:ss"]; NSString *hoursString = [df stringFromDate:date]; 

多数民众赞成,你知道你想要的一切。