2013-03-06 80 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

相關問題