如何根据我的时区从日期时间字符串中获取时间。我的时区时间是格林威治标准时间+5:30。日期时间看起来像 -
04/03/2013 3:30:00 AM
我希望输出像 -
9:00:00 AM
提前致谢。
答案 0 :(得分: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];
* 未编译并检查
答案 1 :(得分: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 :(得分: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);
答案 3 :(得分:2)
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"dd/MM/yyyy hh:mm:ss a"];
NSLog(@"%@",[formatter stringFromDate:[NSDate date]]);
输出 06/03/2013 10:41:18 AM
[formatter setDateFormat:@"hh:mm:ss a"];
NSLog(@"%@",[formatter stringFromDate:[NSDate date]]);
输出 上午10:41:18
而不是[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