2012-10-09 71 views
0

NSString转换为NSDate一个简单的事情。如何以相同的格式将Mon, 27 August 2012 01:30 AM转换为NSDate。我试过NSDateFormatter。但我没有以这种必需的格式获得它。谁能帮忙?这是我试过的。从iPhone的NSString NSDate

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); 
+1

现在再次检查。 –

+0

使用默认格式?:) –

回答

0

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

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

+0

我需要将此日期添加到日历事件。这就是为什么我想这样。 –

+0

如果你想它作为NSDate对象,那么有默认的格式,如上所述...如果你想在你的自定义格式,那么你必须将它存储在NSString对象 – Neo

+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

我必须转换从字符串到日期 –

0

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

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是三个字母的缩写工作日的dateformatter代码。
hh是1和12之间的小时的dateformatter代码。HH表示0-23
MMMM是整月,MM将是该月的数值(= 08)。

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]; 
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); 

格式化程序是错误的 检查这一项

+0

只要您使用英语区域设置,此功能就可以工作。它对其他人都失败了。 –

+0

这就是我在日志“2012-08-26 20:00:00 +0000” –

+0

ya,它显示“2012-08-26 20:00:00 +0000”,因为“2012年8月27日星期一01:30 AM“是IST时间,nsdate显示GMT时间。IST时间=格林尼治标准时间+5:30小时,所以当IST时间是凌晨1点30分,日期是27时,格林威治标准时间是下午8点,日期是26。 – Pratik