如何使用日期字符串获取时间



如何根据时区从日期时间字符串中获取时间。我的时区时间是+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

相关内容

  • 没有找到相关文章

最新更新