如何使用日期字符串获取时间
如何根据我的时区从日期时间字符串获取时间。我的时区时间+5:30 GMT.The日期时间看起来喜欢 -如何使用日期字符串获取时间
04/03/2013 3:30:00 AM
我想提前输出喜欢 -
9:00:00 AM
感谢。
您需要两个日期格式化程序。
一个将字符串转换为日期。然后日期字符串以获得所需的时间格式。
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];
* 未编译和检查
中指定的“日期格式模式”。谢谢。但是它的输出是凌晨3:30:00。我如何获得时间与我的时区? – shivam 2013-03-06 04:49:49
@iPatel:谢谢,我刚刚在这里直接打字,:p – 2013-03-06 04:51:15
@shivam:NSDate显示相对于GMT。你不能把它设置为IST。 – 2013-03-06 04:51:54
如果您有字符串的日期和时间是在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);
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);
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
查看'NSDateFormatter'类和它的许多有用的方法。 – Cashew 2013-03-06 04:38:26
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
有很多类似的问题在SO本身。您需要了解http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns – Anupdas 2013-03-06 04:42:04