iPhone返回的格式日期(空)
我有一个日期,格式如下: 2010年7月16日星期五16:58:46+0000。 要将其转换为2010年7月16日星期五,我尝试了:iPhone返回的格式日期(空),iphone,date,nsdateformatter,Iphone,Date,Nsdateformatter,我有一个日期,格式如下: 2010年7月16日星期五16:58:46+0000。 要将其转换为2010年7月16日星期五,我尝试了: NSDateFormatter *df = [[NSDateFormatter alloc] init]; for(int i=0; i<[self.data count]; i++) { id celldata = [self.data objectAtIndex:i]; NSString *str = [NSString stringW
NSDateFormatter *df = [[NSDateFormatter alloc] init];
for(int i=0; i<[self.data count]; i++) {
id celldata = [self.data objectAtIndex:i];
NSString *str = [NSString stringWithFormat:@"%@", [celldata objectForKey:@"created_at"]];
NSLog(@"date for %u is %@",i, str); //this works and writes the date
[df setDateFormat:@"eee MMM dd HH:mm:ss Z yyyy"];
NSDate *date = [df dateFromString:str];
[df setDateFormat:@"eee MMM dd yyyy"];
NSString *dateStr = [df stringFromDate:date];
NSLog(@"%@",dateStr);
}
NSDateFormatter*df=[[NSDateFormatter alloc]init];
对于(int i=0;i如果要解析为日期的原始字符串的格式确实为“20081122”,则对“setDateFormat”的第一次调用在两个代码段中都不正确,因为指定的格式不正确
假设[celldata objectForKey:@“created_at”]在第二个代码段中以“20081122”的格式返回日期,则需要更改对setDateFormat的第一次调用,以使用字符串“yyyyymmdd”的正确格式。这将在调用方法“dateFromString”时驱动正确的转换然后,一旦有了NSDate*对象表示形式,就可以在通过stringFromDate将其转换回字符串时使用所需的任何格式
NSString *dateStr = @"20081122";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
//This is the important change here, this format MUST match the format of the string.
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *date = [dateFormat dateFromString:dateStr];
[dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
dateStr = [dateFormat stringFromDate:date];
[dateFormat release];
这可能会对您有所帮助。不久前我遇到了类似的问题,因此我创建了以下方法
定义
#define DATE_TYPE_hhmmss [NSArray arrayWithObjects:@"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYY [NSArray arrayWithObjects:@"M", @"D", @"Y", nil]
#define DATE_TYPE_MMDDYYYYhhmmss [NSArray arrayWithObjects:@"M", @"D", @"Y", @"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYYWWhhmmss [NSArray arrayWithObjects:@"M", @"D", @"Y", @"W", @"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYYhhmmssWW [NSArray arrayWithObjects:@"M", @"D", @"Y", @"h", @"m", @"s", @"W", nil]
#define DATE_TYPE_YYYYMMDD [NSArray arrayWithObjects:@"Y", @"M", @"D", nil]
#define DATE_TYPE_YYYYMMDDhhmmss [NSArray arrayWithObjects:@"Y", @"M", @"D", @"h", @"m", @"s", nil]
#define DATE_TYPE_YYYYMMDDWWhhmmss [NSArray arrayWithObjects:@"Y", @"M", @"D", @"W", @"h", @"m", @"s", nil]
#define DATE_TYPE_YYYYMMDDhhmmssWW [NSArray arrayWithObjects:@"Y", @"M", @"D", @"h", @"m", @"s", @"W", nil]
#define DATE_TYPE_FRIENDLY [NSArray arrayWithObjects:@"xx", nil]
日期方法
#define DATE_TYPE_hhmmss [NSArray arrayWithObjects:@"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYY [NSArray arrayWithObjects:@"M", @"D", @"Y", nil]
#define DATE_TYPE_MMDDYYYYhhmmss [NSArray arrayWithObjects:@"M", @"D", @"Y", @"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYYWWhhmmss [NSArray arrayWithObjects:@"M", @"D", @"Y", @"W", @"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYYhhmmssWW [NSArray arrayWithObjects:@"M", @"D", @"Y", @"h", @"m", @"s", @"W", nil]
#define DATE_TYPE_YYYYMMDD [NSArray arrayWithObjects:@"Y", @"M", @"D", nil]
#define DATE_TYPE_YYYYMMDDhhmmss [NSArray arrayWithObjects:@"Y", @"M", @"D", @"h", @"m", @"s", nil]
#define DATE_TYPE_YYYYMMDDWWhhmmss [NSArray arrayWithObjects:@"Y", @"M", @"D", @"W", @"h", @"m", @"s", nil]
#define DATE_TYPE_YYYYMMDDhhmmssWW [NSArray arrayWithObjects:@"Y", @"M", @"D", @"h", @"m", @"s", @"W", nil]
#define DATE_TYPE_FRIENDLY [NSArray arrayWithObjects:@"xx", nil]
根据值创建日期
从日期获取字符串
方法[self-getDateWithMonth:12天:24年:1994]
返回一个通常难以读取的NSDate
对象,因此您可以使用[self-getStringFromDate:date-date-date-TYPE:date\u-TYPE\mmddyyyyyy]
来获取NSDate
对象的字符串
使用定义(宏)指定要在字符串中获取的日期格式
例如:
DATE\u TYPE\u hhmmss
将返回Hour | Minute | Second
,
DATE\u TYPE_MMDDYYYY
将返回月|日|年
,
DATE_TYPE_mmddyyyyhmmss
将返回月|日|年|时|分|秒
,
DATE_TYPE_mmddyyywhhmmss
将返回Month | Day | Year | Weekday(#)、Hour | Minute | Second
等等
控制台日志
2012-04-29 13:42:15.791 Atomic Class[1373:f803] String of Date: "12|24|1994"
2012-04-29 13:42:15.793 Atomic Class[1373:f803] Month: 12
2012-04-29 13:42:15.794 Atomic Class[1373:f803] Day: 24
2012-04-29 13:42:15.794 Atomic Class[1373:f803] Year: 1994
对周EEE而不是EEE使用Dateformatter
[df setDateFormat:@“EEE MMM dd HH:mm:ss Z yyyy”]
我希望这将对您有所帮助…可能无法将字符串解析为变量date
。请尝试执行NSLog(@“%@”,date)
并查看是否为零。@sch:“0的日期为2012年4月29日11:11:22+0000太阳”因此,第二个序列是不可能工作的,因为第一个日期格式与传入字符串完全不匹配。而且你可能会被12/24“feechure”所咬——检查电话设置以确保12/24开关与你的区域设置匹配(美国为12,其他大多数地方为24)。(出于好奇,你从哪里复制了这段代码?其他人在使用非常相似的数据时遇到了类似的问题——你们都有无关/无用的stringWithFormat调用——所以我猜你使用的是相同的原始源代码。)抱歉,编辑的部分出错。请忽略它
NSDate * date = [self getDateWithMonth:12 day:24 year:1994];
NSString * dateInString = [self getStringFromDate:date dateType:DATE_TYPE_MMDDYYYY];
int month = [[[dateInString componentsSeparatedByString:@"|"] objectAtIndex:0] intValue];
int day = [[[dateInString componentsSeparatedByString:@"|"] objectAtIndex:1] intValue];
int year = [[[dateInString componentsSeparatedByString:@"|"] objectAtIndex:2] intValue];
NSLog(@"String of Date: \"%@\"", dateInString);
NSLog(@"Month: %d", month);
NSLog(@"Day: %d", day);
NSLog(@"Year: %d", year);
2012-04-29 13:42:15.791 Atomic Class[1373:f803] String of Date: "12|24|1994"
2012-04-29 13:42:15.793 Atomic Class[1373:f803] Month: 12
2012-04-29 13:42:15.794 Atomic Class[1373:f803] Day: 24
2012-04-29 13:42:15.794 Atomic Class[1373:f803] Year: 1994