//实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//设定时间格式,这里可以设置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//用[NSDate date]可以获取系统当前时间
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
//输出格式为:2010-10-27 10:22:13
NSLog(@"%@",currentDateStr);
//alloc后对不使用的对象别忘了release
[dateFormatter release];
///根据时间字符串获得当前星期几--
-(void)GetTime
{ 
    //根据字符串转换成一种时间格式 供下面解析
   NSString* string = @"2013-07-16 13:21";
   NSDateFormatter *inputFormatter = [[[NSDateFormatter alloc] init]autorelease];
    [inputFormattersetDateFormat:@"yyyy-MM-dd HH:mm"];
   NSDate* inputDate = [inputFormatter dateFromString:string];
    
    NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]autorelease];
    NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease];
   NSInteger unitFlags = NSYearCalendarUnit |
    NSMonthCalendarUnit |
    NSDayCalendarUnit |
    NSWeekdayCalendarUnit |
    NSHourCalendarUnit |
    NSMinuteCalendarUnit |
    NSSecondCalendarUnit;
    
    comps = [calendarcomponents:unitFlags fromDate:inputDate];
   int week = [comps weekday];
   NSString *strWeek = [self getweek:week];
   self.textfield.text = strWeek;
   NSLog(@"week is:%@",strWeek);
}
-(NSString*)getweek:(NSInteger)week
{
   NSString*weekStr=nil;
   if(week==1)
    {
        weekStr=@"星期天";
    }else if(week==2){
        weekStr=@"星期一";
        
    }else if(week==3){
        weekStr=@"星期二";
        
    }else if(week==4){
        weekStr=@"星期三";
        
    }else if(week==5){
        weekStr=@"星期四";
        
    }else if(week==6){
        weekStr=@"星期五";
        
    }else if(week==7){
        weekStr=@"星期六";
        
    }
   return weekStr;
}
     各种时间字符说明
     (:)
     时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由您的应用程序的当前区域性值确定。
     (/)
     日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由您的应用程序的当前区域性确定。
     (%)
     用于表明不论尾随什么字母,随后字符都应该以单字母格式读取。也用于表明单字母格式应以用户定义格式读取。有关更多详细信息,请参见下面的内容。
     d
     将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %d。
     dd
     将日显示为带前导零的数字(如 01)。
     EEE
     将日显示为缩写形式(例如 Sun)。
     EEEE
    将日显示为全名(例如 Sunday)。
     M
     将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %M。
     MM
    将月份显示为带前导零的数字(例如 01/12/01)。
     MMM
     将月份显示为缩写形式(例如 Jan)。
     MMMM
    将月份显示为完整月份名(例如 January)。
     gg
    显示时代/纪元字符串(例如 A.D.)
     h
     使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,请使用 %h。
     hh
    使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。
     H
     使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %H。
     HH
     使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。
     m
     将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m。
     mm
    将分钟显示为带前导零的数字(例如 12:01:15)。
     s
     将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s。
     ss
    将秒显示为带前导零的数字(例如 12:15:05)。
     f
     显示秒的小数部分。例如,ff将精确显示到百分之一秒,而 ffff 将精确显示到万分之一秒。用户定义格式中最多可使用七个 f符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f。
     t
     使用 12 小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M之间的任一小时显示大写的 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。
     tt
     对于使用 12 小时制的区域设置,对中午之前任一小时显示大写的 AM,对中午到 11:59 P.M之间的任一小时显示大写的 PM。
     对于使用 24 小时制的区域设置,不显示任何字符。
     y
     将年份 (0-9)显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 %y。
     yy
     以带前导零的两位数字格式显示年份(如果适用)。
     yyy
     以四位数字格式显示年份。
     yyyy
     以四位数字格式显示年份。
     z
     显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 %z。
     zz
     显示带前导零的时区偏移量(例如 -08)
     zzz
    显示完整的时区偏移量(例如 -08:00)
    格式显示
     M/d/yy
    12/7/58
     d-MMM
    7-Dec
     d-MMMM-yy
    7-December-58
     d MMMM
    7 December
     MMMM yy
     December58
     hh:mm tt
    08:50 PM
     h:mm:ss t
    8:50:35 P
     H:mm
    20:50
     H:mm:ss
    20:50:35
     M/d/yyyy H:mm
    12/7/1958 20:50
来源:oschina
链接:https://my.oschina.net/u/2528742/blog/796606