我试图从日期中提取小时,分钟和上午/下午,但我得到的是NULL输出。我已经在下面显示了我的代码,请查看它。
NSString *dateStr=@"29/07/2013 02:00am";
NSDateFormatter * formatter=[[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mmaa"];
NSDate *date=[formatter dateFromString:dateStr];
NSString *finalDate=[formatter stringFromDate:date];
NSLog(@"%@",finalDate);
非常感谢提前
答案 0 :(得分:4)
您非常接近,但在解析原始字符串之前需要指定原始字符串的日期格式,然后在创建之前设置输出所在的日期格式:
NSString *dateStr=@"29/07/2013 02:00am";
// Create a date formatter
NSDateFormatter * formatter=[[NSDateFormatter alloc] init];
// As rmaddy pointed out, you should set the locale:
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
// Set the date format for the input string
[formatter setDateFormat:@"dd/MM/yyyy hh:mma"];
// Create the NSDate from the string
NSDate *date=[formatter dateFromString:dateStr];
// Set the date format for the output string
[formatter setDateFormat:@"hh:mma"];
// Create the output string
NSString *finalDate=[formatter stringFromDate:date];
NSLog(@"%@",finalDate); // Output is: 02:00AM
答案 1 :(得分:-1)
- (void) dateformat{
NSDate *today = [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSHourCalendarUnit|NSMinuteCalendarUnit
fromDate:today];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSString *dateString = [formatter stringFromDate:today];
NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]];
NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]];
BOOL is24hTime = (amRange.location == NSNotFound && pmRange.location == NSNotFound);
if (is24hTime == NO ) {
NSString *meridiem = (amRange.location == NSNotFound)?@"PM":@"AM";
NSLog(@"%d:%d %@",components.hour,components.minute,meridiem);
}
}