如何从时间戳“2017-04-30T14:30 + 00:00(GMT)”获取Objective-c中的日期,小时,分钟和秒?

时间:2017-04-05 11:29:20

标签: ios objective-c

我是iOS(Objective-c)编码的新手,我被困在时间戳上。 我正在获取JSON解析时的时间戳,即。2017-04-30T14:30+00:00(GMT)。如何从这个时间戳获取日期,小时,分钟和秒?我在GMT中收到此格式,是否可以将其转换为"IST"?怎么样?

1 个答案:

答案 0 :(得分:1)

日期格式模式
日期模式是一个字符串,其中特定的字符串在格式化时用日历中的日期和时间数据替换,或者用于在解析时生成日历的数据。以下是模式中用于显示给定语言环境的适当格式的字符。以下是示例:

enter image description here

- (NSString *)curentDateStringFromDate:(NSDate *)dateTimeInLine withFormat:(NSString *)dateFormat {
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

    [formatter setDateFormat:dateFormat];

    NSString *convertedString = [formatter stringFromDate:dateTimeInLine];

    return convertedString;
}

使用如下:

NSString *dateString = [self curentDateStringFromDate:[NSDate date] withFormat:@"dd-MM-yyyy"];
NSString *timeString = [self curentDateStringFromDate:[NSDate date] withFormat:@"hh:mm:ss"];
NSString *hoursString = [self curentDateStringFromDate:[NSDate date] withFormat:@"h"];

Foundation framework中,用于此任务的课程(向任一方向)为NSDateFormatter Refer here

以下代码将GMT转换为IST。

NSString *inDateStr = @"2000/01/02 03:04:05";
NSString *s = @"yyyy/MM/dd HH:mm:ss";

// about input date(GMT)
NSDateFormatter *inDateFormatter = [[NSDateFormatter alloc] init];
inDateFormatter.dateFormat = s;
inDateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSDate *inDate = [inDateFormatter dateFromString:inDateStr];

// about output date(IST)
NSDateFormatter *outDateFormatter = [[NSDateFormatter alloc] init];
outDateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"IST"];
outDateFormatter.dateFormat = s;
NSString *outDateStr = [outDateFormatter stringFromDate:inDate];

// final output
NSLog(@"[in]%@ -> [out]%@", inDateStr, outDateStr);