2013-03-06 30 views
3

如何根据我的时区从日期时间字符串获取时间。我的时区时间+5:30 GMT.The日期时间看起来喜欢 -如何使用日期字符串获取时间

04/03/2013 3:30:00 AM 

我想提前输出喜欢 -

9:00:00 AM 

感谢。

+0

查看'NSDateFormatter'类和它的许多有用的方法。 – Cashew 2013-03-06 04:38:26

+0

Chk这个http://stackoverflow.com/questions/11504843/get-current-iphone-device-timezone-date-and-time-from-utc-5-timezone-date-and-ti – 2013-03-06 04:38:58

+1

有很多类似的问题在SO本身。您需要了解http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns – Anupdas 2013-03-06 04:42:04

回答

6

您需要两个日期格式化程序。

一个将字符串转换为日期。然后日期字符串以获得所需的时间格式。

NSDateFormatter *dateFormatter=[NSDateFormatter new]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"]; 
NSDate *date=[dateFormatter dateFromString:@"04/03/2013 3:30:00 AM"]; 

NSDateFormatter *dfTime = [NSDateFormatter new]; 
[dfTime setDateFormat:@"hh:mm:ss a"]; 
NSString *time=[dfTime stringFromDate:date]; 

* 未编译和检查

+0

中指定的“日期格式模式”。谢谢。但是它的输出是凌晨3:30:00。我如何获得时间与我的时区? – shivam 2013-03-06 04:49:49

+0

@iPatel:谢谢,我刚刚在这里直接打字,:p – 2013-03-06 04:51:15

+0

@shivam:NSDate显示相对于GMT。你不能把它设置为IST。 – 2013-03-06 04:51:54

5

如果您有字符串的日期和时间是在GMT日期时间,那么你需要添加GMT在您的字符串。通过这个,你可以得到你的时区的实际时间 -

NSString *dateStr = @"04/03/2013 3:30:00 AM GMT"; 

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

    [dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a ZZZ"]; 

    NSDate *date = [dateFormatter dateFromString:dateStr]; 

    [dateFormatter setDateFormat:@"hh:mm:ss a"]; 

    NSString *opDateStr = [dateFormatter stringFromDate:date]; 

    NSLog(@"op = %@",opDateStr); 
2
NSString *strdate= @"04/03/2013 3:30:00 AM"; 
NSDateFormatter *dateFormatter=[NSDateFormatter new]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
NSDate *date=[dateFormatter dateFromString:strdate]; 

NSDateFormatter *dfTime = [NSDateFormatter new]; 
[dfTime setDateFormat:@"hh:mm:ss a"]; 
NSString *time=[dfTime stringFromDate:date]; 
NSLog(@"%@",time); 
2
NSDateFormatter * formatter = [[NSDateFormatter alloc]init]; 
[formatter setDateFormat:@"dd/MM/yyyy hh:mm:ss a"]; 
NSLog(@"%@",[formatter stringFromDate:[NSDate date]]); 

输出 2013年6月3日上午10时41分18秒

[formatter setDateFormat:@"hh:mm:ss a"]; 
NSLog(@"%@",[formatter stringFromDate:[NSDate date]]); 

输出 10:41:18 AM

而不是[NSDate date]传递所需日期进行格式化。

如你想从你根据当前时区提供的时间字符串的时候,你需要做这样的事情

NSDateFormatter *dateFormatter=[NSDateFormatter new]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a zzz"]; 
NSDate *date=[dateFormatter dateFromString:@"04/03/2013 3:30:00 AM 0000"]; 

NSDateFormatter *dfTime = [NSDateFormatter new]; 
[dfTime setTimeZone:[NSTimeZone systemTimeZone]]; 
[dfTime setDateFormat:@"hh:mm:ss a"]; 
NSString *time=[dfTime stringFromDate:date]; 
NSLog(@"%@",time); 

你不会得到真正的输出,除非有偏差出现,这是0000(GMT偏移)。如果dateString和它的格式化程序的格式不同,时间格式化程序也不会完美地工作。所以你需要这样做MM/dd/yyyy hh:mm:ss一个zzz,zzz是偏移量。现在你的输出将是09:00:00 AM

相关问题