来自iPhone的NSString的NSDate

时间:2012-10-09 09:39:51

标签: iphone nsstring nsdate

NSString转换为NSDate的一件简单事。如何以同样的格式将Mon, 27 August 2012 01:30 AM转换为NSDate。我尝试了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);

6 个答案:

答案 0 :(得分: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

答案 1 :(得分: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];

答案 2 :(得分: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);

你的格式化程序错了 检查一下

答案 3 :(得分:0)

NSDateFormatter 用于指定从日期中提取字符串时将显示在日期字符串中的格式,或者在提取日期来自字符串

因此,每当您从NSString中提取NSDate时,NSDate始终以默认日期格式获取(例如 2012-08-27 00:30:00 +0000 )...仅在您提取时来自NSDate的NSString,NSString可以在NSDateFormatter中设置的所需(自定义)格式获得。

答案 4 :(得分:0)

NSLog将以固定格式返回NSDate,我猜。 如果我们需要不同格式的Date,我们应该通过NSDateFormatter格式化它并将其作为NSString。 只是一个猜测。

答案 5 :(得分:0)

不要忘记设置正确的区域设置!如果您的设备未使用英语语言环境,则NSDateFormatter可能会将MonAugust转换为有用信息,因为Mon不是您所用语言中星期一的正确缩写。例如在德国,星期一的正确三字母缩写为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)。