如何根据时区从日期时间字符串中获取时间。我的时区时间是+5:30 GMT。日期时间看起来像-
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];
*未编译并检查
如果字符串中有日期和时间,即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年3月6日上午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 a zzz中执行此操作,zzz是偏移量。现在您的输出将是上午09:00:00