0

NSString从到转换的一件简单的事情NSDate。我怎样才能转换 Mon, 27 August 2012 01:30 AMNSDate这种相同的格式。我试过了NSDateFormatter。但我没有以这种必需的格式得到它。任何人都可以帮忙吗?这是我尝试过的。

 NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"EEEE,dd MM yyyy HH:mm a"];
NSDate *date1 = [df dateFromString:@"Mon,27 August 2012 01:30 AM"];
NSLog(@"%@",date1);
4

6 回答 6

1

我希望这对你有帮助!

NSDateFormatter *dateformater=[[[NSDateFormatter alloc] init]autorelease];
[dateformater setDateFormat:@"EEEE,dd MMMM yyyy HH:mm a"];

NSDate *todayTmp=[NSDate date];
NSString *conversionDate=[dateformater stringFromDate:todayTmp];

Note : (Upper case) HH for 24h time format, (Lower case) hh for 12h time format
于 2012-10-09T10:05:25.033 回答
1
NSString *myDateAsAStringValue = @"Mon, 27 August 2012 01:30 AM";

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

[df setDateFormat:@"EEE, dd MMM yyyy HH:mm a"];

NSDate *myDate = [[NSDate alloc]init];

myDate = [df dateFromString:myDateAsAStringValue];

[df release];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm a"];
NSString *strDate = [dateFormatter stringFromDate:myDate];
NSLog(@"%@", strDate);
[dateFormatter release];
于 2012-10-09T11:19:26.907 回答
1

请使用下面的代码

   NSDateFormatter *df=[[NSDateFormatter alloc] init];
   [df setDateFormat:@"EEE,dd MMMM yyyy hh:mm a"];
   NSDate *date1 = [df dateFromString:@"Mon,27 August 2012 01:30 AM"];
   NSLog(@"%@",date1);

你的格式化程序是错误的检查这个

于 2012-10-09T12:52:14.813 回答
0

NSDateFormatter是指定从日期中提取字符串时出现在日期字符串中的格式或从字符串中提取日期时出现在日期字符串中的格式

因此,每当您从 NSString 中提取 NSDate 时,总是以默认日期格式获得 NSDate(例如2012-08-27 00:30:00 +0000)......只有当您从 NSDate 中提取 NSString 时,才能在需要时获得 NSString您在 NSDateFormatter 中设置的(自定义)格式。

于 2012-10-09T09:47:15.183 回答
0

我猜 NSLog 将以固定格式返回 NSDate。如果我们需要不同格式的日期,我们应该通过 NSDateFormatter 对其进行格式化并将其获取为 NSString。只是一个猜测。

于 2012-10-09T10:37:46.417 回答
0

不要忘记设置正确的语言环境!如果您的设备不使用英语语言环境,NSDateFormatter 可能无法将其转换MonAugust有用的信息,因为 Mon 不是您的语言中星期一的正确缩写。例如,在德国,Monday 的正确三字母缩写是Mon..

如果您解析包含单词的日期,则必须设置正确的语言环境。

这应该有效:

NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"EEE,dd MMMM yyyy hh:mm a"];

NSLocale *posixLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[df setLocale:posixLocale];

NSDate *date1 = [df dateFromString:@"Mon,27 August 2012 01:30 AM"];
NSLog(@"%@",date1);

EEE 是三字母工作日缩写的日期格式化程序代码。
hh 是 1 到 12 之间小时的日期格式化代码。HH 表示 0-23
MMMM 是整月,MM 将是该月的数值 (= 08)。

于 2012-10-09T11:09:48.787 回答